0

正如我应该使用字段“日期时间”还是“时间戳”所明确指出的那样?,DATETIME 和 TIMESTAMP 字段之间的主要区别是:

  1. MySQL 中的 TIMESTAMP 一般用于跟踪记录的变化,并在每次记录发生变化时自动更新。
  2. DATETIME 表示日期(在日历中找到)和时间(可以在挂钟上观察到),而 TIMESTAMP 表示明确定义的时间点。
  3. 只有 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。

所以,我有一个包含 date_created 列和 date_modified 列的表。我将 date_created 设为 DATETIME,因此每次更新记录时都不会被覆盖,并将 date_modified 设为 TIMESTAMP,因此每次更新记录时都会更新。

如何保持两者同步?例如,在最初创建记录后,date_created 和 date_modified 列将是相同的。稍后,如果记录从未更改过,那么无论时区和夏令时如何,它们都应该保持不变,不是吗?

4

1 回答 1

2

您列表中的第 1 点并不完全正确。DEFAULT CURRENT_TIMESTAMP并且ON UPDATE CURRENT_TIMESTAMP是可以应用于TIMESTAMP字段的选项(现在在 5.6DATETIME中也是字段)。它们不是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在更新中使用 a 来防止这种情况发生)。

如果您使用的是 MySQL 5.6,则可以使用DATETIME并获得相同的行为。

请参阅http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html

于 2013-04-15T17:46:00.170 回答