MySQL 查询当天

1. 介绍
MySQL 是一种常用的关系型数据库管理系统,广泛应用于不同行业的数据存储和管理中。在实际应用中,经常需要根据时间条件查询当天的数据。本文将详细介绍在 MySQL 中如何进行当天的查询操作。
2. 准备工作
在开始之前,我们首先需要创建一个包含日期时间类型的表,用于演示当天查询的操作。假设我们创建了一个名为 orders 的表,包含以下字段:
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
order_number VARCHAR(20) NOT NULL,
order_date DATETIME
);
表中的 order_date 字段存储订单的日期时间信息。
3. 查询当天的数据
为了查询当天的数据,我们可以使用 DATE() 函数来提取日期,然后与当前日期进行比较。
SELECT * FROM orders WHERE DATE(order_date) = CURDATE();
上述 SQL 查询语句中,DATE(order_date) 函数将 order_date 字段的日期部分提取出来,与 CURDATE() 函数获取的当前日期进行比较。如果日期相同,即为当天的数据。
4. 查询最近一周的数据
有时候我们还需要查询最近一周的数据,可以使用 BETWEEN 和 DATE_SUB() 函数结合使用来实现。
SELECT * FROM orders WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 DAY) AND CURDATE();
上述 SQL 查询语句中,DATE_SUB(CURDATE(), INTERVAL 6 DAY) 表示当前日期减去 6 天,CURDATE() 函数获取的当前日期。BETWEEN 关键字用于判断 order_date 是否在这个日期范围内。
5. 查询当前小时的数据
除了按照日期查询当天的数据,有时候我们还需要按照小时查询当前小时的数据。可以使用 HOUR() 函数提取小时数,然后与当前小时数进行比较。
SELECT * FROM orders WHERE HOUR(order_date) = HOUR(NOW());
上述 SQL 查询语句中,HOUR(order_date) 函数将 order_date 字段的小时提取出来,HOUR(NOW()) 函数获取的当前小时数。如果小时数相同,即为当前小时的数据。
6. 查询当前时间段的数据
如果我们需要查询当前时间段的数据,可以使用 BETWEEN 和 TIME() 函数结合使用来实现。
SELECT * FROM orders WHERE order_date BETWEEN CURDATE() AND CONCAT(CURDATE(), ' 23:59:59');
上述 SQL 查询语句中,CURDATE() 函数获取的当前日期,CONCAT() 函数用于拼接日期和时间。通过拼接当前日期和 ’23:59:59’,可以得到当前日期的结束时间段。
7. 示例代码运行结果
为了更好地理解以上查询操作,下面给出一些示例代码以及运行结果。
7.1 查询当天的数据
假设表中存在以下数据:
| id | order_number | order_date |
|---|---|---|
| 1 | 20210001 | 2021-01-01 10:30:00 |
| 2 | 20210002 | 2021-01-02 15:45:00 |
| 3 | 20210003 | 2021-02-01 09:20:00 |
| 4 | 20210004 | 2022-03-01 14:10:00 |
执行以下 SQL 查询语句:
SELECT * FROM orders WHERE DATE(order_date) = CURDATE();
查询结果为:
| id | order_number | order_date |
|---|---|---|
| 2 | 20210002 | 2021-01-02 15:45:00 |
7.2 查询最近一周的数据
执行以下 SQL 查询语句:
SELECT * FROM orders WHERE order_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 DAY) AND CURDATE();
查询结果为:
| id | order_number | order_date |
|---|---|---|
| 2 | 20210002 | 2021-01-02 15:45:00 |
| 3 | 20210003 | 2021-02-01 09:20:00 |
| 4 | 20210004 | 2022-03-01 14:10:00 |
7.3 查询当前小时的数据
执行以下 SQL 查询语句:
SELECT * FROM orders WHERE HOUR(order_date) = HOUR(NOW());
查询结果根据当前时间的不同会有所变化。
7.4 查询当前时间段的数据
执行以下 SQL 查询语句:
SELECT * FROM orders WHERE order_date BETWEEN CURDATE() AND CONCAT(CURDATE(), ' 23:59:59');
查询结果根据当前时间的不同会有所变化。
8. 总结
通过以上介绍,我们可以看到,在 MySQL 中查询当天的数据可以使用 DATE() 函数提取日期,然后与当前日期比较。类似地,查询最近一周的数据可以使用 BETWEEN 和 DATE_SUB() 函数结合。查询当前小时和当前时间段的数据则可以分别使用 HOUR() 函数和 BETWEEN 结合 TIME() 函数来实现。这些查询操作在实际应用中非常常用。
极客笔记