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

