1

我对时间戳数据类型有一些疑问。我是否正确理解,如果我使用时间戳,它将以 UTC 存储日期时间?当我检索数据时,它会以当地时间显示吗?

如果是这样,我是否需要进行任何配置才能启用此“功能”?

4

3 回答 3

0

默认情况下,TIMESTAMP 以 UTC 存储其数据,然后将其转换回数据库所在服务器的时区。这里对类似问题有几个很好的回答:我应该使用字段'datetime'还是'timestamp'?

于 2012-11-01T21:44:02.997 回答
0

这一切都在手册中。

MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。(这不会发生在其他类型,例如 DATETIME。)

要将时间值显式转换为特定时区,请使用convert_tz()

当前时区是会话的一部分——它继承自 MySQL 全局时区,而 MySQL 全局时区继承自系统时区。

于 2012-11-01T21:46:15.820 回答
0

时间戳在输出时转换为日期和时间的字符串表示形式。它将使用 MySQL 服务器的时区设置来显示结果集中的内容。

时间戳在内部存储为自 EPOCH 以来的秒数('1970-01-01 00:00:00' UTC);

这就是为什么很多人喜欢将他们的数据库设置为 UTC 的原因——这样他们总是能得到一个 UTC 日期时间,并且可以在代码方面将其转换为本地时间。

MySQL 数据库的时区将使用内部配置设置,这可能会回退到服务器的系统设置。

请参阅如何配置 MySQL 时区设置:http ://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

于 2012-11-01T21:39:46.463 回答