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

Truy vấn khoảng thời gian MySQL: lấy ngày trong 14 tuần trước từ ngày hiện tại

Dùng BETWEEN kết hợp DATE_SUB(CURDATE(), INTERVAL 14 WEEK). Tạo bảng:

mysql> CREATE TABLE DemoTable (
    ArrivalDate DATE
); Query OK, 0 rows affected (0.93 sec)

Giả sử ngày hiện tại là 2019-08-31. Chèn dữ liệu:

mysql> INSERT INTO DemoTable VALUES('2019-04-21'); Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES('2019-03-01'); Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('2019-09-01'); Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES('2019-08-31'); Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-30'); Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-01'); Query OK, 1 row affected (0.12 sec)

Hiển thị dữ liệu:

mysql> SELECT * FROM DemoTable;

Kết quả:

+-------------+
| ArrivalDate |
+-------------+
| 2019-04-21  |
| 2019-03-01  |
| 2019-09-01  |
| 2019-08-31  |
| 2019-06-30  |
| 2019-06-01  |
+-------------+
6 rows in set (0.00 sec)

Truy vấn lấy ngày trong 14 tuần trước đến hôm nay:

mysql> SELECT * FROM DemoTable 
WHERE ArrivalDate BETWEEN DATE_SUB(CURDATE(), INTERVAL 14 WEEK) AND CURDATE();

Kết quả (3 hàng trong khoảng):

+-------------+
| ArrivalDate |
+-------------+
| 2019-08-31  |
| 2019-06-30  |
| 2019-06-01  |
+-------------+
3 rows in set (0.00 sec)

Lưu ý: CURDATE() trả về ngày hiện tại. INTERVAL 14 WEEK = 98 ngày.