MySQL如何获取当天的数据?实用查询方法详解

要获取MySQL中当天的数据,最直接的方法是使用CURDATE()函数结合日期字段的筛选条件。 通过WHERE DATE(date_column) = CURDATE()可以精准过滤出当天记录,这是处理日期查询的高效基础操作,下面将详细解析几种常用方法,并说明其适用场景。

mysql如何获取当天的数据吗,MySQL如何获取当天数据

使用CURDATE()函数
CURDATE()返回当前日期(不包含时间),适用于精确匹配当天的数据:

SELECT * FROM table_name WHERE DATE(date_column) = CURDATE();

此方法简单直观,但需注意:若日期字段已建立索引,使用DATE()函数可能导致索引失效,影响大表查询性能。

通过BETWEEN和NOW()函数
结合NOW()获取当前日期时间,并利用BETWEEN限定时间范围:

SELECT * FROM table_name 
WHERE date_column BETWEEN CURDATE() AND NOW();

适合包含时间戳的字段,可精确到当天的每一秒。

使用DATE_SUB()和INTERVAL动态计算
若需获取当天及之前或之后的数据,可配合DATE_SUB()灵活调整:

-- 获取当天及前7天数据
SELECT * FROM table_name 
WHERE date_column >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);

优化建议

  • 索引优化:避免对日期字段使用函数包装(如DATE(date_column)),可改为范围查询:
    SELECT * FROM table_name 
    WHERE date_column >= CURDATE() AND date_column < CURDATE() + INTERVAL 1 DAY;

    此方式能有效利用索引,提升查询速度。

  • 时区处理:若数据库时区与系统时区不一致,可使用CONVERT_TZ()函数转换,确保日期准确性。

获取当天数据时,优先选择范围查询替代函数处理,以兼顾效率与准确性,根据实际需求选择CURDATE()NOW()或动态区间,并注意索引和时区设置,即可高效完成日期筛选。

未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网

原文地址:https://www.html4.cn/10691.html发布于:2026-08-13