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

相关推荐
Elastic 中国社区官方博客7 分钟前
Elasticsearch 和 Kibana 8.16:Kibana 获得上下文和 BBQ 速度并节省开支!
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
晴天のVlog9 分钟前
Fastapi使用MongoDB作为数据库
数据库·python·mongodb·fastapi
Desmend__23 分钟前
正则表达式那些事儿
数据库·mysql·正则表达式
袁庭新39 分钟前
LuaRocks如何安装数据库驱动?
java·数据库·redis·lua·luarocks·袁庭新
Narutolxy1 小时前
从 MySQL 5.7 到 8.0:理解 GROUP BY 的新规则与实战优化20241112
数据库
chusheng18401 小时前
Python 正则表达式进阶用法:分组与引用详解
数据库·python·正则表达式
喵叔哟2 小时前
重构代码之移动字段
java·数据库·重构
念白4432 小时前
智能病历xml提取
数据库·sql·oracle
qingy_20462 小时前
【JavaWeb】JavaWeb入门之XML详解
数据库·oracle
大数据面试宝典2 小时前
用AI来写SQL:让ChatGPT成为你的数据库助手
数据库·人工智能·chatgpt