MySQL时间戳字段

时间:2011-02-03 20:33:56

标签: mysql timestamp

是否可以将字段设置为时间戳,但在更新为当前时间戳时不能更改?

我正在尝试使用phpMyAdmin这样做,它不允许我删除默认的on update CURRENT_TIMESTAMP

请参阅此问题和答案:Support user time zones

我正在尝试使用TIMESTAMP,因为它可以让我轻松地使用时区。

更新同一行时是否无法保持该字段中的数据完好无损?

3 个答案:

答案 0 :(得分:1)

这是TIMESTAMP的行为。这可能会令人困惑。阅读this以完成它。或者考虑使用DATETIME。

答案 1 :(得分:1)

服务器允许DEFAULTON UPDATE的任意组合,如果phpMyAdmin不允许你设置它,那么它可能是phpMyAdmin中的一个错误。无论如何,重要的是要注意时间戳列是在mysql中专门处理的,所以如果你的表中有多个这种类型,很可能它不会像你期望的那样工作。

来自mysql docs

在CREATE TABLE语句中,可以通过以下任何方式声明第一个TIMESTAMP列:

  • 使用DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句,该列的当前时间戳为其默认值,并自动更新。
  • 既没有DEFAULT也没有ON UPDATE子句,它与DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP相同。
  • 使用DEFAULT CURRENT_TIMESTAMP子句且没有ON UPDATE子句,该列具有其默认值的当前时间戳,但不会自动更新。
  • 如果没有DEFAULT子句且ON UPDATE CURRENT_TIMESTAMP子句,则该列的默认值为0并自动更新。

答案 2 :(得分:0)

使用命令界面。 看起来您必须在表创建时指定“DEFAULT CURRENT_TIMESTAMP”属性才能获得该行为。 documentation here.