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.