是否将NOW()设置为日期时间数据类型的默认值?我在表用户中有两列,即registerDate and lastVisitDate由日期时间数据类型组成。我想做以下事情。将registerDate的默认值设置为MySQL NOW()将lastVisitDate的默认值设置为0000-00-00 00:00:00而不是默认使用的null。因为该表已经存在并且具有现有记录,所以我想使用Modify表。我试过使用下面的两段代码,但是都没有用。ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW()ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP;它给我错误: ERROR 1067 (42000): Invalid default value for 'registerDate'我可以在MySQL中将默认的datetime值设置为NOW()吗?
4 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
EUREKA!
对于所有为在MySQL中设置默认DATETIME值而灰心的人,我确切地知道您的感觉/感觉。所以这里是:
`ALTER TABLE `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0
仔细观察一下,我没有在0周围添加单引号/双引号。
重要更新:
这个答案早就发布了。当时,它可以在我(可能是最新的)MySQL安装上运行,并且我想共享它。在决定立即使用此解决方案之前,请阅读下面的评论。
www说
TA贡献1775条经验 获得超8个赞
在mysql 5.6.5及更高版本上,您可以使用精确的日期时间并设置默认值。但是有一个微妙的地方,它将精度值传递给datetime和NOW()函数调用。
该示例有效:
ALTER TABLE my_table MODIFY created datetime(6) NOT NULL DEFAULT NOW(6);
本示例不起作用:
ALTER TABLE my_table MODIFY created datetime(6) NOT NULL DEFAULT NOW();
添加回答
举报
0/150
提交
取消