在MySQL中处理日期和时间是日常开发中的常见需求。DATE函数及相关日期操作函数可以帮助你提取、格式化、计算和比较日期数据。下面介绍几种常用的MySQL日期函数使用方法,帮助你高效处理日期类型字段。
提取日期部分
如果你有一个DATETIME或TIMESTAMP类型的字段,但只想获取其中的日期部分(即去掉时间),可以使用DATE()函数。语法: DATE(expression)
例如,从当前时间提取日期:
SELECT DATE(NOW()); -- 输出:2025-04-05
或者从表中某个时间字段提取日期:
SELECT DATE(create_time) FROM orders; -- 返回每条记录的创建日期
日期格式化输出
使用DATE_FORMAT()函数可以将日期按照指定格式显示,适合报表或界面展示。语法: DATE_FORMAT(date, format)
常用格式符:
%Y:四位年份(如2025) %m:两位月份(01-12) %d:两位日期(01-31) %H:小时(00-23) %i:分钟(00-59) %s:秒(00-59)示例:
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日'); -- 输出:2025年04月05日
SELECT DATE_FORMAT(create_time, '%Y-%m-%d') FROM logs;
日期计算与增减
MySQL提供DATE_ADD()和DATE_SUB()函数用于对日期进行加减操作。语法: DATE_ADD(date, INTERVAL expr unit)
示例:
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); -- 当前时间加7天 SELECT DATE_SUB('2025-04-05', INTERVAL 1 MONTH); -- 减去一个月 SELECT NOW() + INTERVAL 2 HOUR; -- 简写方式,加2小时支持的单位包括:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR等。
日期比较与条件查询
在WHERE子句中可以直接使用日期函数进行范围查询或条件筛选。示例:
SELECT * FROM orders WHERE DATE(create_time) = '2025-04-05'; -- 查询某天的数据 SELECT * FROM logs WHERE create_time >= DATE_SUB(NOW(), INTERVAL 24 HOUR); -- 过去24小时内的记录 SELECT * FROM users WHERE birthday BETWEEN '1990-01-01' AND '1999-12-31';基本上就这些。掌握DATE()、DATE_FORMAT()、DATE_ADD/SUB以及日期比较方法,就能应对大多数日期操作场景。注意字段索引优化,避免在日期字段上频繁使用函数导致索引失效。不复杂但容易忽略。
