MySQL日期查询全攻略:从基础操作到高级技巧
在MySQL中查询日期主要通过日期函数和条件语句实现,核心方法是使用DATE()、BETWEEN、>=和<=等函数与运算符,要查询某一天的记录,可使用WHERE DATE(column) = '2023-10-01';若需范围查询,则用WHERE date_column BETWEEN '2023-10-01' AND '2023-10-31'。
以下是具体操作指南:

-
精确日期查询:
- 使用
DATE()函数提取日期部分,忽略时间:SELECT * FROM orders WHERE DATE(order_time) = '2023-10-05';
- 直接比较日期字段(适用于无时间的DATE类型):
SELECT * FROM events WHERE event_date = '2023-10-05';
- 使用
-
日期范围查询:
- 推荐使用
BETWEEN,注意包含边界值:SELECT * FROM sales WHERE sale_date BETWEEN '2023-10-01' AND '2023-10-31';
- 或使用运算符组合:
SELECT * FROM logs WHERE log_date >= '2023-10-01' AND log_date <= '2023-10-31';
- 推荐使用
-
灵活日期函数:
CURDATE()获取当前日期:查询今天数据:SELECT * FROM tasks WHERE due_date = CURDATE();
DATE_ADD()或DATE_SUB()计算日期:查询最近7天记录:SELECT * FROM activity WHERE action_time >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);
YEAR()、MONTH()提取年月:查询2023年10月数据:SELECT * FROM reports WHERE YEAR(report_date) = 2023 AND MONTH(report_date) = 10;
-
性能优化建议:
- 对日期字段建立索引可加速查询,但避免在字段上使用函数(如
DATE(column)),否则索引失效。 - 若需按时间范围频繁查询,可考虑分区表(Partitioning),按日期分区提升效率。
- 对日期字段建立索引可加速查询,但避免在字段上使用函数(如
-
常见场景示例:
- 查询本周数据:
SELECT * FROM orders WHERE YEARWEEK(order_date) = YEARWEEK(CURDATE());
- 查询月初至今记录:
SELECT * FROM data WHERE date_column >= DATE_FORMAT(CURDATE(), '%Y-%m-01');
- 查询本周数据:
掌握这些方法后,可高效处理MySQL中的日期查询需求,结合业务场景选择合适方案,尤其注意索引使用与函数优化,以平衡准确性与性能。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/8306.html发布于:2026-08-01





