【发布时间】:2017-02-10 01:04:56
【问题描述】:
可以将 MySQL 5.7 中的 DATE (NOT DATETIME) 列的默认值设置为当前日期吗?
我试试这个(由 Workbench 生成):
ALTER TABLE `db`.`table` CHANGE COLUMN `column` `column` DATE NOT NULL DEFAULT CURDATE() ;
但不适用于我。 (表中没有数据)
【问题讨论】:
可以将 MySQL 5.7 中的 DATE (NOT DATETIME) 列的默认值设置为当前日期吗?
我试试这个(由 Workbench 生成):
ALTER TABLE `db`.`table` CHANGE COLUMN `column` `column` DATE NOT NULL DEFAULT CURDATE() ;
但不适用于我。 (表中没有数据)
【问题讨论】:
不,你不能。 documentation 对此非常清楚:
这意味着,例如,您不能为日期设置默认值 列作为函数的值,例如 NOW() 或 CURRENT_DATE。 例外是您可以将 CURRENT_TIMESTAMP 指定为默认值 对于 TIMESTAMP 和 DATETIME 列。请参见第 12.3.5 节,“自动 TIMESTAMP 和 DATETIME 的初始化和更新”。
您可以执行以下操作之一:
DATETIME 的默认值设置列。创建将日期提取为单独列的视图。insert 触发器以设置date 列。【讨论】:
如果您有另一列具有例如默认为 NOW() 的日期时间字段,则有一种方法可以执行此操作。 See this post:
【讨论】: