【问题标题】:MySQL timestamp only on createMySQL 时间戳仅在创建时
【发布时间】:2010-10-23 11:25:27
【问题描述】:

我在 MySQL 5.x(使用 PHP)上使用时间戳来记住事件时间。在开发过程中,我必须使用一个查询来更新表,该查询会更改所有列中的某些内容。然后将时间戳重置为当前时间。

如何仅在插入时更改时间戳而不在更新或替换时更改?

【问题讨论】:

  • 对于可能在谷歌上搜索的其他人来说,这是一个较晚的答案:如果您在数据库中进行手动编辑时使用 TIMESTAMP;或者如果您有多个 TIMESTAMP 列并且不想触摸所有列; MySQL手册说将列分配给自身。您将列显式设置为其当前值(即“updated_on = updated_on”),这样它就不会被 UPDATE 更改。

标签: mysql timestamp


【解决方案1】:

Here's all you need to know。简而言之,我认为应该这样做:

ALTER TABLE `mytable`
CHANGE `mydatefield` `mydatefield`
TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

【讨论】:

  • 谢谢!我认为这里不需要“NOT NULL”部分。
【解决方案2】:
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

这里有很好的文档for time-stamp

【讨论】:

  • 我可能遗漏了一些东西,但我的表是(并且曾经)以这种方式定义的,但日期仍然发生了变化。从mysql解释:'pur_time','timestamp','NO','','CURRENT_TIMESTAMP',''
【解决方案3】:

您可以为该字段使用default value,而不是将其包含在插入或更新查询中。

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 1970-01-01
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多