我正在使用PHP/MySQL,一直使用DATETIME来存储created
和updated
值,但我认为可能有更好的方法。
我应该使用TIMESTAMP吗?如果是这样,为什么?
文档指出:
TIMESTAMP 值在存储时会从当前时区转换为 UTC,检索时再从 UTC 转换回当前时区(这仅适用于 TIMESTAMP 数据类型,而不适用于其他类型,如 DATETIME)。默认情况下,每个连接的当前时区都是服务器时间。可以按连接设置时区,如第 9.6 节“MySQL 服务器时区支持”中所述。只要时区设置保持不变,您就可以获取与存储相同的值。如果您存储 TIMESTAMP 值,然后更改时区并检索该值,则检索到的值与存储的值不同。这是因为在两个方向的转换中没有使用相同的时区。当前时区可用作 time_zone 系统变量的值。
因此,如果您希望将日期/时间存储在 UTC 而不是当前时区中,则可以使用 TIMESTAMP
。
时间戳在数据库中以协调世界时(UTC)存储。然后,根据您的时区设置,每次获取它时都会自动调整偏移量。如果您关心为应用程序设置时区,则一定要使用时间戳。