gpt4 book ai didi

mysql - 将 NOW() 设置为日期时间数据类型的默认值?

转载 作者:行者123 更新时间:2023-11-29 21:44:19 25 4
gpt4 key购买 nike

我在表用户中有两列,即registerDate 和lastVisitDate,它们由日期时间数据类型组成。我想做以下事情。

  1. 将 registerDate 默认值设置为 MySQL NOW()
  2. 将 lastVisitDate 默认值设置为 0000-00-00 00:00:00,而不是默认使用的 null。

因为表已经存在并且已有记录,所以我想使用修改表。我尝试过使用下面的两段代码,但都不起作用。

ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW()
ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP;

它给了我错误:错误1067(42000):'registerDate'的默认值无效

我可以在 MySQL 中将默认日期时间值设置为 NOW() 吗?

最佳答案

从 MySQL 5.6.5 开始,您可以使用具有动态默认值的 DATETIME 类型:

CREATE TABLE foo (
creation_time DATETIME DEFAULT CURRENT_TIMESTAMP,
modification_time DATETIME ON UPDATE CURRENT_TIMESTAMP
)

或者甚至结合这两个规则:

modification_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

引用:
http://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html
http://optimize-this.blogspot.com/2012/04/datetime-default-now-finally-available.html

在 5.6.5 之前,您需要使用 TIMESTAMP 数据类型,该数据类型会在记录修改时自动更新。但不幸的是,每个表只能存在一个自动更新的 TIMESTAMP 字段。

CREATE TABLE mytable (
mydate TIMESTAMP
)

参见:http://dev.mysql.com/doc/refman/5.1/en/create-table.html

如果您想阻止 MySQL 在 UPDATE 上更新时间戳值(以便它仅在 INSERT 上触发),您可以将定义更改为:

CREATE TABLE mytable (
mydate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)

关于mysql - 将 NOW() 设置为日期时间数据类型的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34224165/

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