您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?

我在服务器端使用PHP。


当前回答

我总是将DATETIME字段用于除行元数据(创建或修改日期)之外的任何内容。

如MySQL文档中所述:

DATETIME类型在您需要同时包含日期和时间信息的值时使用。MySQL以“YYYY-MM-DD HH:MM:SS”格式检索并显示DATETIME值。支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。...TIMESTAMP数据类型的范围为“1970-01-01 00:00:01”UTC到“2038-01-09 03:14:07”UTC。它具有不同的财产,具体取决于MySQL版本和服务器运行的SQL模式。

一般情况下,您很可能会达到TIMESTAMP的下限,例如存储出生日期。

其他回答

如果您想保证您的应用程序在2038年2月无法运行,请使用TIMESTAMP。有关支持的日期范围,请参阅REFMAN。

时间戳是计算机通过网络时间协议(NTP)记录的事件的当前时间。

datetime是在PHP配置中设置的当前时区。

TIMESTAMP需要4个字节,而DATETIME需要8个字节。

时间戳数据类型存储日期和时间,但使用UTC格式,而不是像datetime那样使用当前时区格式。当您获取数据时,时间戳再次将其转换为当前时区时间。

所以假设你在美国,从一个时区为美国的服务器获取数据,然后你将根据美国时区获取日期和时间。时间戳数据类型列总是在其行更新时自动更新。因此,跟踪上次更新特定行的时间可能很有用。

有关更多详细信息,您可以阅读博客文章Timestamp Vs Datetime。

我是基于语义做出这个决定的。

当我需要记录(或多或少)固定时间点时,我使用时间戳。例如,当记录被插入到数据库中时,或者当发生某些用户操作时。

当可以任意设置和更改日期/时间时,我使用datetime字段。例如,当用户可以保存以后的更改约会时。