使用默认CURDATE()的MySQL DATE字段,而不是DATETIME

8

在MySQL 5.7中,可以将DATE(而非DATETIME)列的默认值设置为当前日期吗?
我尝试了以下方法(由Workbench生成):

ALTER TABLE `db`.`table` CHANGE COLUMN `column` `column` DATE NOT NULL DEFAULT CURDATE() ;

但对我不起作用。(表中没有数据)

2个回答

13
不可以。根据文档的明确规定:
“这意味着,例如,您无法将日期列的默认值设置为函数值,如NOW()或CURRENT_DATE。 例外情况是,您可以将CURRENT_TIMESTAMP指定为TIMESTAMP和DATETIME列的默认值。 请参见第12.3.5节,“自动初始化和更新TIMESTAMP和DATETIME”。”
您可以执行以下操作之一:
- 为DATETIME设置默认值的列。创建一个视图,提取日期作为单独的一列。 - 创建一个insert触发器来设置日期列。

0

如果您有另一列,例如带有默认值NOW()的日期时间字段,则可以通过此方式完成。请参阅此帖子:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接