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

如何设置MySQL表字段默认值为昨日日期(YYYY-MM-DD格式)

实现默认插入昨日日期的MySQL建表方案

嘿,刚好能帮到你!首先得说,既然你需要的是YYYY-MM-DD格式的日期,用DATE数据类型比TIMESTAMP更贴合你的需求——毕竟TIMESTAMP本身是带时分秒的时间戳类型,强行转日期格式反而多此一举。

直接给你符合要求的建表命令:

CREATE TABLE test (
    foo INT,
    ts DATE DEFAULT (CURDATE() - INTERVAL 1 DAY)
);

简单解释下:

  • DATE类型专门存储YYYY-MM-DD格式的日期,完美匹配你的需求;
  • CURDATE()会返回当前系统日期,减去INTERVAL 1 DAY就得到了昨日的日期;
  • 把这个表达式作为默认值,每次插入数据时如果不指定ts字段的值,就会自动填充昨日的日期。

如果因为某些原因你必须保留TIMESTAMP类型(虽然不太推荐,因为会带时分秒),也可以这样写:

CREATE TABLE test (
    foo INT,
    ts TIMESTAMP DEFAULT (DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY))
);

不过这样存的ts值会是YYYY-MM-DD 00:00:00(因为截断了时分秒),如果只需要日期部分,还是第一个方案更合适。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:38:51