MySQL创建表时dueDate字段current_timestamp()+14默认值失效求助
解决MySQL中borrowedbook表dueDate默认值问题
你的问题出在dueDate字段的默认值设置上,MySQL不支持直接对CURRENT_TIMESTAMP()做数值加法(current_timestamp()+14),这种写法会把日期转为数值后进行运算,得到的不是正确的"当前时间+14天"结果。
正确的建表语句
把dueDate的默认值改为使用DATE_ADD()函数来计算:
create table borrowedbook ( studentEmail varchar(255) not null, bookId varchar(255) not null, borrowedDate datetime NOT NULL DEFAULT current_timestamp(), returnedDate datetime, dueDate datetime NOT null default DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL 14 DAY), FOREIGN KEY (studentEmail) REFERENCES student(studentEmail), FOREIGN KEY (bookId) REFERENCES book(bookId) );
补充说明
DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL 14 DAY)会在当前时间基础上精准添加14天的时间间隔,返回标准datetime类型结果,完全匹配你的需求。- 若使用MySQL 8.0.13及以上版本,还可以考虑用存储生成列绑定
borrowedDate计算到期时间(适合需要和借出日期强关联的场景):
这种写法会在插入时自动基于dueDate datetime NOT null GENERATED ALWAYS AS (DATE_ADD(borrowedDate, INTERVAL 14 DAY)) STOREDborrowedDate的值计算到期时间,后续如果borrowedDate修改,dueDate也会同步更新。
内容的提问来源于stack exchange,提问作者Tom C.
相关产品推荐
相关产品推荐

