Cú pháp: Range ±30 ngày từ NOW()
SELECT * FROM bang
WHERE cot_ngay > NOW() - INTERVAL 30 DAY
AND cot_ngay < NOW() + INTERVAL 30 DAY;
Ví dụ: Dữ liệu từ 2018-2019, NOW = 2019-02-27
Dữ liệu
+----+---------------------+
| Id | ArrivalDate |
+----+---------------------+
| 1 | 2019-01-10 00:00:00 | -- 48 ngày trước (ngoài range)
| 2 | 2019-01-29 00:00:00 | -- 29 ngày trước (trong range)
| 3 | 2019-02-13 00:00:00 | -- 14 ngày trước (trong range)
| 4 | 2019-02-19 00:00:00 | -- 8 ngày trước (trong range)
| 5 | 2018-02-13 00:00:00 | -- 1 năm trước (ngoài)
| 6 | 2018-03-13 00:00:00 | -- 11 tháng trước (ngoài)
+----+---------------------+
Truy vấn
mysql> SELECT * FROM selectDatesDemo
-> WHERE ArrivalDate > NOW() - INTERVAL 30 DAY
-> AND ArrivalDate < NOW() + INTERVAL 30 DAY;
Kết quả (2 dòng: Id 3, 4)
+----+---------------------+
| Id | ArrivalDate |
+----+---------------------+
| 3 | 2019-02-13 00:00:00 |
| 4 | 2019-02-19 00:00:00 |
+----+---------------------+
Các biến thể khoảng thời gian
| Khoảng | Cú pháp |
| 30 ngày trước đến nay | WHERE cot >= NOW() - INTERVAL 30 DAY |
| 7 ngày tới | WHERE cot BETWEEN NOW() AND NOW() + INTERVAL 7 DAY |
| Tháng này | WHERE cot >= DATE_FORMAT(NOW(), '%Y-%m-01') AND cot < DATE_FORMAT(NOW() + INTERVAL 1 MONTH, '%Y-%m-01') |
| Tuần này (CN-T7) | WHERE YEARWEEK(cot, 0) = YEARWEEK(NOW(), 0) |
Hiệu năng: Tránh function trên cột