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_columnDATETIME 类型),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_columnDATETIME 类型),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 表达式结合 TIMESTAMPDATETIME 字段:

复制代码
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

相关推荐
小Tomkk11 分钟前
mysql 最长连续登录天数解析
数据库·mysql
快来卷java40 分钟前
深入剖析雪花算法:分布式ID生成的核心方案
java·数据库·redis·分布式·算法·缓存·dreamweaver
tpoog1 小时前
[MySQL]数据类型
android·开发语言·数据库·mysql·算法·adb·贪心算法
爱吃喵的鲤鱼1 小时前
MySQL增删改查(CRUD)操作详解与实战指南
数据库·mysql
啞謎专家2 小时前
在rockylinux9.4安装mongodb报错:缺少:libcrypto.so.10文件库
数据库·mongodb
chat2tomorrow3 小时前
数据仓库是什么?数据仓库的前世今生 (数据仓库系列一)
大数据·数据库·数据仓库·低代码·华为·spark·sql2api
ssxueyi3 小时前
StarRocks 部署:依赖环境
服务器·数据库·starrocks·php
.又是新的一天.3 小时前
02_MySQL安装及配置
android·数据库·mysql
库海无涯3 小时前
如何把数据从SQLite迁移到PostgreSQL
数据库·postgresql·sqlite
明明明h4 小时前
MySQL 查看本地用户名和密码
数据库·mysql·adb