正如Should I use field 'datetime' or 'timestamp'?明确指出的那样,DATETIME和TIMESTAMP字段之间的主要区别是:
所以,我有一个包含date_created列和date_modified列的表。我将date_created设置为DATETIME,因此每次更新记录时都不会覆盖它,并将date_modified设置为TIMESTAMP,以便每次更新记录时都会更新。
如何保持两者同步?例如,在最初创建记录,date_created和date_modified列之后,它们将是相同的。如果记录从未改变过,那么无论时区和夏令时如何,它们应该保持不变,不是吗?
答案 0 :(得分:2)
列表中的第1点不完全正确。 DEFAULT CURRENT_TIMESTAMP
和ON UPDATE CURRENT_TIMESTAMP
是可以应用于TIMESTAMP
字段的选项(现在也可以应用于5.6 DATETIME
字段)。它们不是TIMESTAMP
的固有属性。如果您使用的是5.6之前的版本,那么您应该对这两个字段使用TIMESTAMP
。
CREATE TABLE my_tbl
(date_created TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
date_modified TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)
date_created
将在创建记录时获取当前时间戳,并且每当记录更新时,date_modified将设置为当前时间戳(您可以在更新中使用date_modified = date_modified
来阻止此操作)。 / p>
如果您使用的是MySQL 5.6,则可以使用DATETIME
并获得相同的行为。
请参阅http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html