MySQL如何查询日期区间:实用技巧与示例详解
在MySQL中查询日期区间,主要通过WHERE子句结合日期函数和比较运算符来实现,核心方法是使用BETWEEN ... AND ...或>=与<=组合条件,并确保日期格式与字段类型匹配,以下是具体操作方法和注意事项:

基础查询:使用BETWEEN语句
BETWEEN语句可直接筛选指定范围内的日期,语法简洁易读:
SELECT * FROM 表名 WHERE 日期字段 BETWEEN '2023-01-01' AND '2023-12-31';
此查询会返回2023年全年数据,注意:BETWEEN包含边界值(即包含首尾日期)。
灵活查询:使用比较运算符
若需排除边界或自定义开闭区间,可使用>=和<=:
SELECT * FROM 表名 WHERE 日期字段 >= '2023-01-01' AND 日期字段 <= '2023-12-31';
此方式与BETWEEN效果相同,但更灵活,例如可调整为>或<来排除特定日期。
动态日期区间:结合日期函数
利用CURDATE()、DATE_SUB()等函数可实现动态查询,例如查询最近7天的数据:
SELECT * FROM 表名 WHERE 日期字段 >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND 日期字段 <= CURDATE();
或查询本月数据:
SELECT * FROM 表名 WHERE YEAR(日期字段) = YEAR(CURDATE()) AND MONTH(日期字段) = MONTH(CURDATE());
处理时间戳字段
若字段类型为DATETIME或TIMESTAMP,需注意时间部分的影响,例如查询某日全天数据:
SELECT * FROM 表名 WHERE DATE(时间戳字段) = '2023-06-15';
或使用范围查询避免时间部分干扰:
SELECT * FROM 表名 WHERE 时间戳字段 >= '2023-06-15 00:00:00' AND 时间戳字段 < '2023-06-16 00:00:00';
性能优化建议
- 索引优化:为日期字段创建索引可大幅提升区间查询效率。
- 避免函数转换:在
WHERE子中直接对字段使用函数(如DATE())可能导致索引失效,建议使用范围条件替代。 - 明确时区设置:确保数据库时区与业务需求一致,避免日期偏差。
掌握MySQL日期区间查询的关键在于正确使用条件语句、日期函数及格式匹配,根据实际场景选择BETWEEN或比较运算符,结合动态函数可实现灵活筛选,同时注意字段类型和性能优化,即可高效处理时间相关数据查询。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/12975.html发布于:2026-08-25





