MySQL如何查询当月记录的实用方法与技巧
要查询MySQL中的当月记录,可以使用CURDATE()、MONTH()和YEAR()函数结合WHERE子句来筛选数据。核心方法是利用日期函数动态获取当前月份和年份,并与数据表中的日期字段进行比较,假设有一个名为orders的表,其中包含order_date字段,查询当月记录的SQL语句如下:
SELECT * FROM orders WHERE MONTH(order_date) = MONTH(CURDATE()) AND YEAR(order_date) = YEAR(CURDATE());
这条语句通过MONTH(CURDATE())和YEAR(CURDATE())获取当前月份和年份,并与order_date的月份和年份匹配,从而精确筛选出当月数据。

其他实用技巧包括:
- 使用
BETWEEN优化性能:如果数据量较大,可以结合月初和月末日期进行范围查询,避免全表扫描。SELECT * FROM orders WHERE order_date BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE());
- 处理时间戳字段:若日期存储为时间戳(如
UNIX_TIMESTAMP),需先用FROM_UNIXTIME()转换后再比较。SELECT * FROM logs WHERE MONTH(FROM_UNIXTIME(timestamp)) = MONTH(CURDATE()) AND YEAR(FROM_UNIXTIME(timestamp)) = YEAR(CURDATE());
- 扩展应用:查询当月第一天或最后一天的记录,可结合
DATE_ADD()或LAST_DAY()函数灵活调整条件。
注意事项:
- 确保日期字段已建立索引,以提升查询效率。
- 避免在
WHERE子句中对字段使用函数(如MONTH(order_date)),这可能使索引失效,推荐使用范围查询(如BETWEEN)替代。
通过以上方法,可以高效、准确地从MySQL中检索当月记录,满足日常数据分析和报表生成的需求。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/12951.html发布于:2026-08-25





