MySQL如何高效查询当月记录:方法与实例详解
要查询MySQL中的当月记录,核心方法是利用日期函数(如CURDATE()、DATE_FORMAT()或YEAR()/MONTH())结合条件筛选,其中关键是通过WHERE子句限定日期范围为当月的第一天到最后一天。
假设表中有一个日期字段create_time,查询当月记录的常用语句如下:

SELECT * FROM 表名 WHERE YEAR(create_time) = YEAR(CURDATE()) AND MONTH(create_time) = MONTH(CURDATE());
此方法通过YEAR()和MONTH()函数提取日期中的年份和月份,并与当前日期(CURDATE())的年份月份对比,精准匹配当月数据。
另一种高效方式是使用日期范围查询,直接定位当月首尾日期:
SELECT * FROM 表名 WHERE create_time >= DATE_FORMAT(CURDATE(), '%Y-%m-01') AND create_time < DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH);
这里通过DATE_FORMAT(CURDATE(), '%Y-%m-01')获取当月第一天,并利用DATE_ADD()计算下个月第一天作为范围上限,避免遗漏月末时刻的数据。
注意事项:
- 索引优化:若日期字段已建立索引,范围查询(第二种方法)通常效率更高,可加速大数据量检索。
- 时区处理:若数据库存储的是UTC时间,需用
CONVERT_TZ()函数转换时区后再比对。
通过以上方法,可灵活应对不同场景下的当月记录查询需求,兼顾准确性与性能。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/16326.html发布于:2026-09-12





