MySQL时间戳列

时间:2020-03-06 14:56:51  来源:igfitidea点击:

是否可以在MySQL表中定义一个timestamp列,该列将在每次修改同一行中的字段时自动更新?理想情况下,此列最初应设置为插入行的时间。

干杯,
大学教师

解决方案

这是时间戳列类型的默认功能。但是,请注意,此类型的格式为yyyymmddhhmmss(所有数字,无冒号或者其他分隔符)。

编辑:上面的有关格式的注释仅适用于MySQL <4.1 ...的版本。更高版本将其格式化为DateTime

IIRC,类型为时间戳的表中的第一列在创建记录时设置,并且无法更改。每当更新记录时,都会设置timestamp类型的第二列。或者相反亦然。

我没有做太多的MySQL工作,因此我们需要验证一下。

我们可以将timestamp列用作其他提及的海报。这是可用于在其中添加列的SQL:

ALTER TABLE `table1` ADD `lastUpdated` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ;

这将添加一个名为" lastUpdated"的列,其默认值为当前日期/时间。当该记录更新时(比如说5分钟后),该时间戳将自动更新为当前时间。

仅当将MySQL时间戳设置为默认值时,才设置其创建或者更新时间。当TIMESTAMP DEFAULT CURRENT_TIMESTAMP时,ALTER TABLE some_table添加。
否则,它就像DateTime字段一样工作,只是它与1970/01/01 UTC有关,因此它是绝对时间点,与DateTime一样,它并不取决于特定的时区。