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

如何在MySQL Workbench中为DateTime列设置指定格式默认值

解决方案:为CreatedDate列设置当天0点整的默认值

首先要明确:MySQL的DATETIME/TIMESTAMP类型存储的是日期时间的内部数值,并非字符串格式。你需要的默认值本质是当前日期的00:00:00.000时刻,而非固定的字符串模板。以下是针对不同场景的可行方案:

方案1:使用DATETIME(3)类型(推荐,时间范围更广)

直接利用CURDATE()获取当前日期,结合时间间隔生成当天0点的完整日期时间值:

CREATE TABLE your_table_name (
    -- 其他列定义...
    CreatedDate DATETIME(3) DEFAULT (CURDATE() + INTERVAL 0 SECOND)
);
  • DATETIME(3)指定保留3位毫秒,对应你需要的.000部分
  • CURDATE() + INTERVAL 0 SECOND会自动将日期转换为yyyy-mm-dd 00:00:00.000格式的DATETIME值

方案2:使用TIMESTAMP(3)类型(适合依赖时区自动转换的场景)

如果业务需要时区自动转换功能,可以用TIMESTAMP类型,同样设置默认值为当天0点:

CREATE TABLE your_table_name (
    -- 其他列定义...
    CreatedDate TIMESTAMP(3) DEFAULT (CURDATE() + INTERVAL 0 SECOND)
);

注意:TIMESTAMP的时间范围有限(1970-01-01 00:00:01 UTC 至 2038-01-19 03:14:07 UTC),若数据可能超出此范围,优先选择方案1。

你之前设置失败的常见原因

  • 直接用固定字符串'yyyy-mm-dd 00:00:00.000'作为默认值:MySQL无法识别动态日期,必须通过函数生成对应时刻
  • 使用CURRENT_TIMESTAMP作为默认值:它返回的是当前精确时间(比如2024-05-20 14:30:00.123),而非当天0点

验证默认值是否生效

插入一条不指定CreatedDate的记录,然后查询验证:

INSERT INTO your_table_name (其他列) VALUES ('测试内容');
SELECT CreatedDate FROM your_table_name;

返回结果应为yyyy-mm-dd 00:00:00.000格式的当天日期。

内容的提问来源于stack exchange,提问作者S.Sehgal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:40:02