我正在使用PHP / MySQL而且我总是使用DATETIME存储created
和updated
值,但我认为可能有更好的方法。
我是否应该使用TIMESTAMP,如果是,为什么?
答案 0 :(得分:1)
TIMESTAMP值从当前时区转换为UTC以进行存储,并从UTC转换回当前时区以进行检索。 (这仅适用于TIMESTAMP数据类型,而不适用于其他类型,例如DATETIME。)默认情况下,每个连接的当前时区是服务器的时间。可以在每个连接的基础上设置时区,如第9.6节“MySQL服务器时区支持”中所述。只要时区设置保持不变,您就会获得存储的相同值。如果存储TIMESTAMP值,然后更改时区并检索该值,则检索的值与您存储的值不同。发生这种情况是因为在两个方向上都没有使用相同的时区进行转换。当前时区可用作time_zone系统变量的值。
因此,如果您希望将日期/时间存储在UTC而不是当前时区,则可能需要使用TIMESTAMP
。
答案 1 :(得分:0)
时间戳以UTC时间存储在数据库中。然后,根据您的时区设置,无论何时获取它,它都会自动适当地调整偏移量。如果您担心为应用程序设置时区,那么一定要使用时间戳。