为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英4014372 2019-12-16 10:20:34

是否将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贡献626条经验 获得超0个赞

EUREKA!

对于所有为在MySQL中设置默认DATETIME值而灰心的人,我确切地知道您的感觉/感觉。所以这里是:


`ALTER TABLE  `table_name` CHANGE `column_name` DATETIME NOT NULL DEFAULT 0

仔细观察一下,我没有在0周围添加单引号/双引号。


重要更新:


这个答案早就发布了。当时,它可以在我(可能是最新的)MySQL安装上运行,并且我想共享它。在决定立即使用此解决方案之前,请阅读下面的评论。



查看完整回答
反对 回复 2019-12-16
?
www说

TA贡献1257条经验 获得超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();


查看完整回答
反对 回复 2019-12-16

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信