我有一个名为creation_date
的日期时间列。当我使用SET时区时,它仍然显示相同的结果。我做错了什么?
SET time_zone = "America/Los_Angeles";
SELECT * FROM `enswitch_mobile_users` WHERE `creation_date` > '2013-06-02 00:00:00';
就我个人而言,我会坚持使用DATETIME
,并始终使用UTC_TIMESTMP()
而不是NOW()
或类似的。然后,当从数据库读取日期时,可以根据需要使用CONVERT_TZ()
进行转换。
datetime
mysql数据类型不关心time_zone
指令。只有timestamp
所以解决方案-将类型更改为timestamp
您可以在MySQL文档中找到日期和时间类型:
MySQL将TIMESTAMP值从当前时区转换为UTC存储,并从UTC返回到当前时区进行检索。(对于其他类型,如DATETIME,则不会发生这种情况。)