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

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)) STORED
    
    这种写法会在插入时自动基于borrowedDate的值计算到期时间,后续如果borrowedDate修改,dueDate也会同步更新。

内容的提问来源于stack exchange,提问作者Tom C.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:20:38