mysql time_zone没用过?

时间:2013-10-08 20:35:21

标签: mysql timezone mysqli-multi-query

我正在尝试将表格中的条目插入或更新到雅典时区。我正在使用共享主机,因此无法设置全局服务器时区。

当我运行这个多重查询时:

SET time_zone="Europe/Athens";
SELECT NOW();

我得到了理想的雅典时间,但当我运行的时候:

SET time_zone="Europe/Athens";
UPDATE `db`.`tbl` SET `the_time` = NOW() , `foo` = '1' WHERE `tbl`.`id` = 100;

设置更新条目的时间仍然是服务器的时间! 为什么会发生这种情况?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

MySQL将TIMESTAMP值从当前时区转换为UTC进行存储,然后从UTC转换回当前时区进行检索。 (对于其他类型,例如DATETIME,不会发生这种情况。)默认情况下,每个连接的当前时区是服务器的时间。可以基于每个连接设置时区。只要时区设置保持不变,您就会获得存储的相同值。如果存储TIMESTAMP值,然后更改时区并检索该值,则检索的值与您存储的值不同。发生这种情况是因为在两个方向上都没有使用相同的时区进行转换。当前时区可用作time_zone系统变量的值。

http://dev.mysql.com/doc/refman/5.6/en/datetime.html