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

是否将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()吗?


慕桂英4014372
浏览 827回答 4
4回答

白衣非少年

EUREKA!对于所有为在MySQL中设置默认DATETIME值而灰心的人,我确切地知道您的感觉/感觉。所以这里是:`ALTER TABLE  `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0仔细观察一下,我没有在0周围添加单引号/双引号。重要更新:这个答案早就发布了。当时,它可以在我(可能是最新的)MySQL安装上运行,并且我想共享它。在决定立即使用此解决方案之前,请阅读下面的评论。

www说

在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();
打开App,查看更多内容
随时随地看视频慕课网APP