为什么不全面使用MySQL的TIMESTAMP?

时间:2009-06-16 18:28:07

标签: php mysql timezone

如果您需要基于每个用户的时区之间的Web应用程序进行转换,为什么不在所有日期/时间字段中全面使用TIMESTAMP?考虑TIMESTAMP值以UTC格式存储,并在检索时转换为为连接设置的时区。

我在IRC上问了这个问题,阅读了MySQL文档,广泛搜索了Google,并询问了我的同事,我还没有找到一个令人信服的理由不使用TIMESTAMP。

注意:据我所知,TIMESTAMP的有限范围为1970 - 2038年;在我的情况下,这不会成为一个问题。此外,我正在使用PHP与MySQL。

3 个答案:

答案 0 :(得分:1)

我认为你的答案就在这里:

  

据我所知,TIMESTAMP的有限范围是1970年至2038年; 在我的情况下不会成为问题。

我会小心地对项目 的寿命做出假设,特别是在数据库模式 时。数据库在使用它们的应用程序消失之后很久就会保持原样和使用状态。

答案 1 :(得分:1)

DATETIME适用于您在数据中使用的任意日期和时间。

TIMESTAMP适用于您希望自动更新时间的情况。如果您想知道插入/更新行的时间,请使用TIMESTAMP。

另外,请记住,TIMESTAMP仅以存储格式化 - 它在作为查询的一部分传回之前转换为服务器的本地时区。

在你的情况下,你最好使用DATETIME。如果您担心UTC,那很好 - 只需用UTC创建日期而不是使用当地时间。使用UTC_TIMESTAMP

答案 2 :(得分:0)

Randalpho的答案在很多事实上都是错误的!

时间戳不需要在创建或更新时自动更新。

此外,时间戳会转换为客户的本地时间,而不是serever's。

只需查看日期时间的MySQL文档即可。