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

Truy vấn ngày trong khoảng 30 ngày (trước và sau NOW) trong MySQL

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ảngCú pháp
30 ngày trước đến nayWHERE cot >= NOW() - INTERVAL 30 DAY
7 ngày tớiWHERE cot BETWEEN NOW() AND NOW() + INTERVAL 7 DAY
Tháng nàyWHERE 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