Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy vấn MySQL lấy bản ghi sau khoảng thời gian 8 tháng

Lọc bản ghi theo khoảng thời gian trong MySQL

Để lấy các bản ghi sau một khoảng thời gian nhất định (ví dụ: 8 tháng) so với ngày hiện tại, sử dụng hàm INTERVAL kết hợp với CURRENT_DATE().

Cú pháp

SELECT * FROM ten_bang
WHERE ten_cot_ngay >= (CURRENT_DATE() - INTERVAL 8 MONTH);

Ví dụ minh họa

Giả sử ngày hiện tại là: 2018-02-06

Tạo bảng DemoTable:

mysql> CREATE TABLE DemoTable (
    StudentName VARCHAR(100),
    AdmissionDate DATE
);
Query OK, 0 rows affected (0.75 sec)

Chèn dữ liệu mẫu:

mysql> INSERT INTO DemoTable VALUES('John', '2019-01-21');
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO DemoTable VALUES('Chris', '2019-10-04');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DemoTable VALUES('Robert', '2018-02-01');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('David', '2019-07-07');
Query OK, 1 row affected (0.15 sec)

Xem tất cả bản ghi:

mysql> SELECT * FROM DemoTable;

Kết quả:

+-------------+---------------+
| StudentName | AdmissionDate |
+-------------+---------------+
| John        | 2019-01-21    |
| Chris       | 2019-10-04    |
| Robert      | 2018-02-01    |
| David       | 2019-07-07    |
+-------------+---------------+
4 rows in set (0.00 sec)

Truy vấn lấy bản ghi trong 8 tháng gần đây:

mysql> SELECT * FROM DemoTable
WHERE AdmissionDate >= (CURRENT_DATE() - INTERVAL 8 MONTH);

Kết quả (với CURRENT_DATE = 2018-02-06, 8 tháng trước là 2017-06-06):

+-------------+---------------+
| StudentName | AdmissionDate |
+-------------+---------------+
| John        | 2019-01-21    |
| Chris       | 2019-10-04    |
| David       | 2019-07-07    |
+-------------+---------------+
3 rows in set (0.00 sec)

Bản ghi của Robert (2018-02-01) bị loại vì cũ hơn 8 tháng so với 2018-02-06.

Các biến thể hữu ích

  • INTERVAL 6 MONTH - 6 tháng
  • INTERVAL 1 YEAR - 1 năm
  • INTERVAL 30 DAY - 30 ngày
  • NOW() thay vì CURRENT_DATE() nếu cột kiểu DATETIME