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

如何在MySQL中将DATE类型字段的默认值设置为当前日期

实现DATE类型字段默认值为当前日期的方案

不同数据库的实现语法存在差异,以下是主流数据库的正确写法:

  • MySQL 8.0+ / MariaDB 10.2+
    直接使用CURRENT_DATE作为默认值,部分版本需要给函数加括号避免语法报错:
    create table STUDENT (
        fname varchar(30) NOT NULL,
        lname varchar(30) NOT NULL,
        date_of_birth DATE DEFAULT (CURRENT_DATE)
    );
    
  • PostgreSQL
    直接指定CURRENT_DATE即可:
    create table STUDENT (
        fname varchar(30) NOT NULL,
        lname varchar(30) NOT NULL,
        date_of_birth DATE DEFAULT CURRENT_DATE
    );
    
  • SQL Server
    把当前时间转换为DATE类型后设为默认值:
    create table STUDENT (
        fname varchar(30) NOT NULL,
        lname varchar(30) NOT NULL,
        date_of_birth DATE DEFAULT CAST(GETDATE() AS DATE)
    );
    
  • Oracle 12c+
    用TRUNC(SYSDATE)获取当前日期作为默认值:
    create table STUDENT (
        fname varchar(30) NOT NULL,
        lname varchar(30) NOT NULL,
        date_of_birth DATE DEFAULT TRUNC(SYSDATE)
    );
    

如果你使用的是不支持DATE字段绑定函数默认值的旧版本数据库,可以通过插入触发器实现需求,以旧版MySQL为例:

-- 先创建基础表
create table STUDENT (
    fname varchar(30) NOT NULL,
    lname varchar(30) NOT NULL,
    date_of_birth DATE
);
-- 创建插入触发器
DELIMITER //
CREATE TRIGGER set_student_dob_default
BEFORE INSERT ON STUDENT
FOR EACH ROW
BEGIN
    IF NEW.date_of_birth IS NULL THEN
        SET NEW.date_of_birth = CURRENT_DATE;
    END IF;
END //
DELIMITER ;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:39:02