MySQL日期函数使用详解:从基础操作到高级技巧
MySQL中日期和时间的高效处理依赖于丰富的内置函数,掌握这些函数能显著提升数据查询与管理的灵活性。核心操作包括日期格式转换、计算、提取和比较,以下是关键使用方法:
-
日期格式转换与显示
使用DATE_FORMAT()函数可自定义日期显示格式,例如将2023-10-01转换为“2023年10月01日”:
SELECT DATE_FORMAT('2023-10-01', '%Y年%m月%d日');而
STR_TO_DATE()则能将字符串转为标准日期类型,确保数据一致性。 -
日期计算与调整
DATE_ADD()和DATE_SUB()支持灵活的日期加减:SELECT DATE_ADD('2023-10-01', INTERVAL 7 DAY); -- 增加7天 SELECT DATE_SUB('2023-10-01', INTERVAL 1 MONTH); -- 减少1个月对于简单计算,直接使用
+ INTERVAL或- INTERVAL更简洁。 -
日期提取与截取
通过YEAR()、MONTH()、DAY()等函数快速获取日期组成部分:SELECT YEAR('2023-10-01'), MONTH('2023-10-01'), DAY('2023-10-01');EXTRACT()函数提供更统一的提取方式,例如EXTRACT(YEAR_MONTH FROM date)可同时获取年月。 -
日期比较与筛选
在查询中,使用BETWEEN、>、<等运算符结合日期函数可精准筛选数据:SELECT * FROM orders WHERE order_date BETWEEN '2023-10-01' AND '2023-10-31';
注意时区问题可能导致比较偏差,建议存储为UTC时间并用
CONVERT_TZ()转换。 -
处理当前时间与时间戳
NOW()和CURDATE()分别获取当前日期时间与日期:SELECT NOW(), CURDATE();
而
UNIX_TIMESTAMP()可将日期转为时间戳,便于跨系统交互。 -
高级技巧:日期区间生成与优化
生成连续日期序列可结合SEQUENCE(MySQL 8.0+)或递归查询:WITH RECURSIVE date_seq AS ( SELECT '2023-10-01' AS date UNION ALL SELECT DATE_ADD(date, INTERVAL 1 DAY) FROM date_seq WHERE date < '2023-10-31' ) SELECT * FROM date_seq;
索引优化提示:对日期字段使用索引时,避免在列上应用函数(如
YEAR(date)),否则索引可能失效。
MySQL日期功能覆盖从基础格式化到复杂区间计算,关键是根据场景选择合适函数,并注意时区与性能影响,结合实际业务需求灵活运用,可大幅提升数据处理效率。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/8151.html发布于:2026-08-01





