0

我的本地 MySQL 服务器有一个奇怪的问题。我有一个表,其 created_at 时间戳列默认设置为 CURRENT_TIMESTAMP。我读过的所有内容都表明这应该以 UTC 存储时间,然后将其转换回本地时间以进行显示。但是,它无法正常工作。我不确定它是否在显示屏上搞砸了或什么,但是当我读出时间戳时,它给了我 GMT 时间,而不是调整我当地的时区。这不是什么大问题,只是 NOW()了我当地时间,所以我无法正确比较它们。我觉得我可能错过了一些愚蠢的东西,但是这里发生了什么?

如果重要的话,我在 64 位 Windows 8 下运行 MySQL 5.5.24(不幸的是)。

编辑:

更多地戳它显示,当我手动添加行时,时间戳工作正常;只是来自我的 PHP 的行很糟糕。我猜 PHP 连接出于某种原因必须覆盖默认时区。

4

2 回答 2

0

您是否加载了时区数据?

http://www.geeksengine.com/article/populate-time-zone-data-for-mysql.html

于 2013-01-09T18:53:54.500 回答
0

啊哈!我的 PHP 服务器和我的 MySQL 服务器使用不同的时区。需要将 date.timezone = America/New_York 添加到我的 php.ini 文件中。

于 2013-01-09T19:49:20.730 回答