2010-11-13 24 views
3

我使用的是PHP/MySQL,我一直使用DATETIME来存储createdupdated值,但我想这可能是一种更好的方法。TIMESTAMP与DATETIME for`created`和`updated`列

我应该使用TIMESTAMP吗?如果是这样,为什么?

+2

可能重复的[日期时间vs时间戳?](http://stackoverflow.com/questions/409286/datetime-vs-timestamp) – 2010-11-13 18:59:02

回答

1

The documentation状态:

时间戳值是从当前时区转化为UTC用于存储,和从UTC转换回当前时区进行检索。 (这仅出现在TIMESTAMP数据类型中,而不是其他类型,如DATETIME。)默认情况下,每个连接的当前时区是服务器的时间。如第9.6节“MySQL服务器时区支持”中所述,时区可以基于每个连接进行设置。只要时区设置保持不变,您可以恢复您存储的相同值。如果您存储TIMESTAMP值,然后更改时区并检索该值,则检索到的值与您存储的值不同。发生这种情况是因为同一时区未用于双向转换。当前时区可用作time_zone系统变量的值。

因此,如果您希望将日期/时间存储为UTC而不是当前时区,则可能需要使用TIMESTAMP

+0

根据你的回答,可以安全地说,在处理时区时,DateTime类型将该职责传递给业务逻辑,而TimeStamp类型将该职责传递给服务器时间(或取决于操作系统中的设置)?从某种意义上说,不应该把正确的答案作为日期时间,因为我们程序员将更好地控制UTC的存储时间,而不考虑操作系统中的设置? – Antony 2011-06-24 19:21:22

0

时间戳以UTC时间存储在数据库中。然后,根据您的时区设置,您随时可以自动调整偏移。如果您关心为应用程序设置时区,那么一定要使用时间戳。