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

我在服务器端使用PHP。


当前回答

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

其他回答

当您有来自不同国家、不同时区的游客时,TIMESTAMP非常有用。您可以轻松地将TIMESTAMP转换为任何国家/地区的时区

在表上执行UPDATE语句时,请注意时间戳的更改。如果您有一个列为“Name”(varchar)、“Age”(int)和“Date_Add”(timestamp)的表,则运行以下DML语句

UPDATE table
SET age = 30

则“Date_Add”列中的每个值都将更改为当前时间戳。

我发现TIMESTAMP能够基于当前时间自动更新自己,而不使用不必要的触发器,这一点非常有用。虽然TIMESTAMP是UTC,但这只是我自己。

它可以跟踪不同的时区,因此如果您需要显示相对时间,例如UTC时间就是您想要的。

时间戳字段是datetime字段的特殊情况。您可以创建具有特殊财产的时间戳列;它可以设置为在创建和/或更新时更新自己。

在“更大”的数据库术语中,时间戳有两个特殊的情况触发器。

正确的答案完全取决于你想做什么。

根据我的经验,如果您想要一个插入仅发生一次的日期字段,并且不想对该特定字段进行任何更新或任何其他操作,请使用日期时间。

例如,考虑具有REGISTRATION DATE字段的用户表。在该用户表中,如果您想知道特定用户的上次登录时间,请使用时间戳类型的字段,以便更新该字段。

如果您是从phpMyAdmin创建表,则默认设置将在行更新发生时更新时间戳字段。如果时间戳字段未随行更新而更新,则可以使用以下查询使时间戳字段自动更新。

ALTER TABLE your_table
      MODIFY COLUMN ts_activity TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;