【问题标题】:MySQL DATE field with default CURDATE(). NOT DATETIMEMySQL DATE 字段,默认为 CURDATE()。不是日期时间
【发布时间】: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 date default


    【解决方案1】:

    不,你不能。 documentation 对此非常清楚:

    这意味着,例如,您不能为日期设置默认值 列作为函数的值,例如 NOW() 或 CURRENT_DATE。 例外是您可以将 CURRENT_TIMESTAMP 指定为默认值 对于 TIMESTAMP 和 DATETIME 列。请参见第 12.3.5 节,“自动 TIMESTAMP 和 DATETIME 的初始化和更新”。

    您可以执行以下操作之一:

    • 使用DATETIME 的默认值设置列。创建将日期提取为单独列的视图。
    • 创建一个insert 触发器以设置date 列。

    【讨论】:

      【解决方案2】:

      如果您有另一列具有例如默认为 NOW() 的日期时间字段,则有一种方法可以执行此操作。 See this post:

      【讨论】:

        猜你喜欢
        • 2013-12-25
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多