2

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

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

为什么不:

SET time_zone = '+00:00';

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

解决了:

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

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

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

4

1 回答 1

-3

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

于 2012-10-25T14:54:00.033 回答