gpt4 book ai didi

mysql - DATETIME 和 TIMESTAMP 之间的同步

转载 作者:行者123 更新时间:2023-11-29 08:33:04 24 4
gpt4 key购买 nike

正如Should I use field 'datetime' or 'timestamp'?明确指出的那样,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 列将是相同的。以后如果记录从未更改过,那么无论时区和夏令时如何,它们都应该保持不变,不是吗?

最佳答案

您列表中的第 1 点并不完全正确。 DEFAULT CURRENT_TIMESTAMPON 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 在更新中)。

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

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

关于mysql - DATETIME 和 TIMESTAMP 之间的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16020695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com