MySQL时区混乱

时间:2012-10-25 14:51:20

标签: mysql datetime timezone timestamp

我几天前发了帖子,并使用了回复中提供的建议。我有一个大型Web应用程序,它托管在我们时区的服务器上,在那里我使用所有日期时间/时间戳到当前时区。我应该使用UTC并在代码级别将其转换为适当的时区。

我现在正在这样做,但我遇到了问题。我现在使用的服务器不在我的时区,TIMESTAMP(插入时)设置为系统(O / S)时间。不是UTC时间。

为什么不:

SET time_zone = '+00:00';

修复插入TIMESTAMP值?如何确保MySQL服务器将时间戳默认为UTC?

解决:

这实在令人困惑,因为MySQL自动将数据库中的TIMESTAMP转换并显示到当前时区,因此我的所有TIMESTAMPS都被转换并显示到SYSTEMS时区。实际上,所有TIMESTAMPS都存储为UTC。所以,如果你去:

SET SESSION time_zone = '+00:00'; SELECT * FROM what_ever_table;

它将显示该时区的时间戳。

1 个答案:

答案 0 :(得分:-2)

MySQL在插入/更新值时不关心时区。它看到的只是时间/日期值和字符串。标准日期格式中没有包含时区数据:yyyy-mm-dd hh:mm:ss。当您检索数据并想要格式化值时,时区只会进入图片,例如使用convert_tz()函数