如何设置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
相关产品推荐
相关产品推荐

