You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中DATE类型设CURRENT_TIMESTAMP为默认值报错,求有效默认值

MySQL DATE类型列的有效默认值设置方案

你遇到的问题是因为MySQL默认配置下,DATE类型不支持直接用CURRENT_TIMESTAMP作为默认值(仅TIMESTAMP、DATETIME类型在MySQL 5.6.5及以上版本支持该默认值)。针对DATE类型,有以下几种有效设置方式:

1. 使用固定字面量日期值

直接指定格式为'YYYY-MM-DD'的固定字符串作为默认值:

ALTER TABLE `playlist_statistics_history` CHANGE COLUMN `date` `date` DATE DEFAULT '2020-01-01' NOT NULL;

2. 通过触发器实现动态当前日期默认值

如果需要默认值为当前日期,可借助触发器实现:

  • 先调整列约束(保留NOTNULL,移除无效默认值):
ALTER TABLE `playlist_statistics_history` CHANGE COLUMN `date` `date` DATE NOT NULL;
  • 创建BEFORE INSERT触发器,插入时自动填充当前日期:
DELIMITER //
CREATE TRIGGER set_playlist_date_default
BEFORE INSERT ON `playlist_statistics_history`
FOR EACH ROW
BEGIN
    IF NEW.`date` IS NULL THEN
        SET NEW.`date` = CURDATE();
    END IF;
END //
DELIMITER ;

3. 升级MySQL版本后直接用动态默认值(MySQL 8.0.19+)

从MySQL 8.0.19版本开始,DATE类型支持直接设置CURRENT_DATE或CURRENT_TIMESTAMP作为默认值,执行语句如下:

ALTER TABLE `playlist_statistics_history` CHANGE COLUMN `date` `date` DATE DEFAULT CURRENT_DATE NOT NULL;

或者:

ALTER TABLE `playlist_statistics_history` CHANGE COLUMN `date` `date` DATE DEFAULT CURRENT_TIMESTAMP NOT NULL;

内容的提问来源于stack exchange,提问作者Čamo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:58:10