我们用UTC保存了时间戳。但是,我们想选择用户到他们自己的时区。显示没有问题。但是日期范围查询的问题。
亚洲/新加坡: 13/03/2017 0:00 AM (0:00)
UTC : 2017 年 12 月 3 日下午 4:00 (16:00)
新加坡时区用户尝试在 2017 年 3 月 13 日至 2017 年 3 月 15 日之间查询他们的数据,由于时区,一些数据已经丢失。
当前查询就像
SELECT * FROM transactions WHERE created_at between "2018-01-24" and "2018-01-25";
我发现
CONVERT_TZ
它现在工作正常。TZ不存储在任何一种数据类型中。
如果您想要墙上的时钟图片,请使用
DATETIME
. 每个人都会看到相同的时间。即磁盘上的位代表本地时间如果要及时存储瞬间,请使用
TIMESTAMP
. 世界不同地区的不同用户会看到不同的时间。也就是说,磁盘上的位表示根据写入时有效的 tz 从本地时间转换后的 UTC 。存储在
2017-03-13
,而不是13/03/2017
,对于后者,DATE_FORMAT
阅读时使用。如果不知道存储值时 tz 的作用,就不可能追溯更改
TIMESTAMPs
to的列DATETIMEs
(反之亦然)。