学习MySQL日期范围之间的过滤查询

762 阅读2分钟

MySQL是一个流行的、易于使用的数据库管理系统,它具有许多功能和灵活性,适合广泛的使用情况。其中一个特点是MySQL日期数据类型,它被用来生成和存储日期值。

在本指南中,我们将引导你了解MySQL日期数据类型,并向你展示如何从一个日期范围内进行过滤。

基础知识

MySQL日期是一种数据类型,它以YYY-MM-DD的形式存储日期值。日期类型使用3个字节来存储日期记录。MySQL的日期类型范围从1000-01-0到9999-12-21。

MySQL打包了很多用于生成和操作日期值的函数。

让我们举一个简单的例子来说明如何在MySQL中存储日期值。考虑下面的查询。

CREATE DATABASE IF NOT EXISTS date_db
USE date_db;
CREATE TABLE date_records(
    id INT AUTO_INCREMENT PRIMARY KEY,
    timetable DATE NOT NULL
);
INSERT INTO date_records(timetable)
VALUES('2021-06-06'),
    ('2020-01-20'),
    ('2030-03-03');

我们现在可以从表中选择值,如:

select * from date_records;
+----+------------+
| id | timetable  |
+----+------------+
|  1 | 2021-06-06 |
|  2 | 2020-01-20 |
|  3 | 2030-03-03 |
+----+------------+
3 rows in set (0.00 sec)

你可以使用MySQL函数来增加更多的日期值到表中。

如何过滤日期范围?

现在让我们进入正题。"如何在一个日期范围内进行过滤?"

MySQL很聪明,非常直观。你可以使用正常的比较运算符来过滤特定日期范围内的数据。

在付款表中,我们可以过滤特定时期内的付款日期。

例如,要过滤 "2005-05-25 11:30:37 "和 "2005-07-30 19:23:44 "之间的付款,我们可以使用下面的查询。

SELECT payment_id, customer_id, rental_id
FROM payment
WHERE payment_date BETWEEN '2005-05-25 11:30:37' AND '2005-07-30 19:23:44' LIMIT 10;

上面的例子应该返回数值在指定时间范围内的列。

另一个例子是过滤到一个特定日期的值。在这种情况下,我们可以使用小于或等于操作符,如。

SELECT payment_id, customer_id, rental_id
FROM payment
WHERE payment_date  <= '2005-05-25 11:30:37' LIMIT 10;

在上面的例子中,查询返回 "2005-05-25 11:30:37 "及以下范围内的所有值。

总结

MySQL允许你使用比较运算符来过滤日期范围,就像你对其他类型如整数一样。