MySQL 按日查询数据

Part 1 查询今日的数据

要在 MySQL 中查询今日的数据,可以使用 CURDATE() 函数来获取当前日期,并将其与你的表中的日期字段进行比较。假设你的表名是 your_table,并且有一个日期字段 your_date_column,你可以使用以下查询来获取今日的数据:

复制代码
SELECT *
FROM your_table
WHERE DATE(your_date_column) = CURDATE();

这里解释一下各个部分的用途:

  • SELECT *:选择表中的所有列。
  • FROM your_table:指定要查询的表。
  • WHERE DATE(your_date_column) = CURDATE():筛选条件,DATE(your_date_column) 提取日期部分(如果 your_date_column 是 DATETIME 类型),CURDATE() 返回当前日期。

如果你的日期时间字段 your_date_column 包含时间信息,并且你希望精确匹配从今天零点开始到当前时间结束的数据,你也可以使用 BETWEEN 语句:

复制代码
SELECT *
FROM your_table
WHERE your_date_column BETWEEN CONCAT(CURDATE(), ' 00:00:00') AND NOW();

这里解释一下各个部分的用途:

  • CONCAT(CURDATE(), ' 00:00:00'):将当前日期与字符串 ' 00:00:00' 连接,生成今天的零点时刻。
  • NOW():返回当前的日期和时间。

这两种方法都可以有效地查询今日的数据,具体选择哪种方式取决于你的需求和 your_date_column 的数据类型。

Part 2

在 MySQL 中查询昨日的数据,你可以使用 CURDATE() 函数结合日期运算来获取昨天的日期,并将其与你的表中的日期字段进行比较。假设你的表名是 your_table,并且有一个日期字段 your_date_column,你可以使用以下查询来获取昨日的数据:

复制代码
SELECT *
FROM your_table
WHERE DATE(your_date_column) = CURDATE() - INTERVAL 1 DAY;

这里解释一下各个部分的用途:

  • SELECT *:选择表中的所有列。
  • FROM your_table:指定要查询的表。
  • WHERE DATE(your_date_column) = CURDATE() - INTERVAL 1 DAY:筛选条件,DATE(your_date_column) 提取日期部分(如果 your_date_column 是 DATETIME 类型),CURDATE() - INTERVAL 1 DAY 返回昨天的日期。

如果你的日期时间字段 your_date_column 包含时间信息,并且你希望精确匹配从昨天零点开始到昨天结束的数据,你也可以使用 BETWEEN 语句,结合 DATE_SUB() 函数来生成昨天的日期和时间范围:

复制代码
SELECT *
FROM your_table
WHERE your_date_column BETWEEN CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 00:00:00') AND CONCAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), ' 23:59:59');

或者更简洁地使用 DATE() 函数和 INTERVAL 表达式结合 TIMESTAMP 或 DATETIME 字段:

复制代码
SELECT *
FROM your_table
WHERE your_date_column >= CURDATE() - INTERVAL 1 DAY + INTERVAL 0 SECOND
  AND your_date_column < CURDATE() + INTERVAL 0 SECOND;

在这个查询中:

  • CURDATE() - INTERVAL 1 DAY + INTERVAL 0 SECOND 生成昨天的零点时刻(因为 CURDATE() 返回的是没有时间的日期,加上 INTERVAL 0 SECOND 不会改变值,但确保了结果是 DATETIME 类型,方便比较)。
  • CURDATE() + INTERVAL 0 SECOND 生成今天的零点时刻(同样,加上 INTERVAL 0 SECOND 是为了类型匹配),但因为我们想要的是昨天的数据,所以使用 < 来确保不包括今天的任何时间。

这两种方法都可以有效地查询昨日的数据,具体选择哪种方式取决于你的需求和 your_date_column 的数据类型。通常,第二种方法(使用 >= 和 <)在处理 DATETIME 字段时更为直观和准确。

Part 3

相关推荐
lusklusklusk3 分钟前
SQL Server补丁版本号为什么“日期新反而版本低”?——GDR、CU、CU+GDR 版本号规则与升级路径详解
数据库
key_3_feng20 分钟前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
TangGeeA21 分钟前
数据库、SQL 与 DB AI
数据库·人工智能·sql
IvorySQL22 分钟前
开源数据库进校园| 11 月 3 日,IvorySQL 校园行走进浙大宁波校区:从 PostgreSQL 扩展生态到 AI 实战
数据库·postgresql·开源
福建佰胜张工37 分钟前
深度解析 Allen-Bradley 150-B135NBDA 智能电机控制器:选型、参数与工业应用
运维·数据库·单片机·嵌入式硬件·安全·自动化
`Levie42 分钟前
MySQL-数据库服务日志管理与数据闪回
数据库·mysql
香蕉大香蕉(06敬畏市场)1 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习
LaughingZhu1 小时前
Product Hunt 热榜 2026-10-30:Empacer、Scape、Floot in ChatGPT
java·前端·数据库·人工智能·chatgpt·notion
standxy1 小时前
即时库存同步实战:从旺店通拉取库存详情落库 MySQL 的完整策略
数据库·集成·电商
麦壳饼1 小时前
SonnetDB:工业 IoT 中的 PID 历史分析与 PLC 协作
数据库·sonnetdb