MySQL如何给DATE类型字段赋值
在MySQL中,给DATE类型字段赋值主要有三种方法:直接插入日期字符串、使用标准日期格式以及借助日期函数,DATE类型用于存储日期值,格式为'YYYY-MM-DD',不包含时间部分。
直接插入日期字符串
可以直接将符合格式的字符串赋值给DATE字段,MySQL会自动识别并转换:

INSERT INTO table_name (date_column) VALUES ('2023-10-25');
如果字符串格式正确,MySQL会成功存储日期数据。
使用标准日期格式
除了'YYYY-MM-DD'格式,MySQL还支持其他常见格式,但建议统一使用标准格式以确保兼容性:
INSERT INTO table_name (date_column) VALUES ('20231025'); -- 无分隔符格式
INSERT INTO table_name (date_column) VALUES ('23-10-25'); -- 短年份格式
注意:短年份格式'YY-MM-DD'中,年份值70-99被解释为1970-1999,00-69被解释为2000-2069。
使用日期函数
MySQL提供了多种日期函数来生成或处理DATE值:
CURDATE()函数
获取当前系统日期:
INSERT INTO table_name (date_column) VALUES (CURDATE());
DATE()函数
从DATETIME或TIMESTAMP值中提取日期部分:
INSERT INTO table_name (date_column) VALUES (DATE('2023-10-25 14:30:00'));
STR_TO_DATE()函数
将字符串按指定格式转换为DATE值:
INSERT INTO table_name (date_column) VALUES (STR_TO_DATE('25,10,2023', '%d,%m,%Y'));
MAKEDATE()函数
根据年份和一年中的天数创建日期:
INSERT INTO table_name (date_column) VALUES (MAKEDATE(2023, 298)); -- 2023年的第298天
注意事项
- 格式验证:如果插入的日期值无效(如'2023-13-01'),MySQL会存储'0000-00-00'或根据SQL模式报错
- 零日期处理:MySQL支持'0000-00-00'作为特殊零日期,但需确保sql_mode允许
- 时区考虑:DATE类型不受时区影响,但日期函数如CURDATE()使用系统时区
- 性能优化:直接使用标准格式字符串通常比函数调用更高效
实际应用示例
-- 创建测试表
CREATE TABLE events (
id INT PRIMARY KEY AUTO_INCREMENT,
event_name VARCHAR(100),
event_date DATE
);
-- 插入各种格式的日期
INSERT INTO events (event_name, event_date) VALUES
('会议', '2023-10-25'),
('培训', CURDATE()),
('研讨会', STR_TO_DATE('2023年12月15日', '%Y年%m月%d日')),
('年会', MAKEDATE(2023, 365));
-- 查询结果
SELECT * FROM events;
给MySQL的DATE字段赋值既简单又灵活,关键是确保日期值的有效性和格式正确性,在实际开发中,建议优先使用标准'YYYY-MM-DD'格式,并在需要动态日期时合理利用MySQL的日期函数,对于用户输入的日期,应进行验证并使用STR_TO_DATE()函数明确指定格式,避免因格式歧义导致的数据错误。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/13626.html发布于:2026-08-28





