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

Hiển thị bản ghi sau một ngày cụ thể trong MySQL

Lọc bản ghi theo ngày trong MySQL

Sử dụng toán tử so sánh >= (lớn hơn hoặc bằng) trên cột kiểu DATE hoặc DATETIME để lấy các bản ghi từ một ngày cụ thể trở đi.

Ví dụ minh họa

Tạo bảng DemoTable708:

mysql> CREATE TABLE DemoTable708 (
    CustomerName VARCHAR(100),
    ShippingDate DATE
);
Query OK, 0 rows affected (0.51 sec)

Chèn dữ liệu:

mysql> INSERT INTO DemoTable708 VALUES('John', '2019-01-21');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable708 VALUES('Chris', '2019-03-24');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable708 VALUES('Robert', '2019-04-26');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable708 VALUES('David', '2019-07-22');
Query OK, 1 row affected (0.17 sec)

Xem tất cả bản ghi:

mysql> SELECT * FROM DemoTable708;
+--------------+--------------+
| CustomerName | ShippingDate |
+--------------+--------------+
| John         | 2019-01-21   |
| Chris        | 2019-03-24   |
| Robert       | 2019-04-26   |
| David        | 2019-07-22   |
+--------------+--------------+
4 rows in set (0.00 sec)

Truy vấn lấy bản ghi từ ngày 2019-04-01 trở đi:

mysql> SELECT * FROM DemoTable708 WHERE ShippingDate >= '2019-04-01';

Kết quả:

+--------------+--------------+
| CustomerName | ShippingDate |
+--------------+--------------+
| Robert       | 2019-04-26   |
| David        | 2019-07-22   |
+--------------+--------------+
2 rows in set (0.00 sec)

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

Yêu cầuCú pháp
Sau ngày X (không bao gồm X)WHERE date_col > '2019-04-01'
Từ ngày X đến ngày YWHERE date_col BETWEEN '2019-04-01' AND '2019-06-30'
Trong 30 ngày gần đâyWHERE date_col >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
Cột DATETIME (chỉ so sánh ngày)WHERE DATE(datetime_col) >= '2019-04-01'
Tháng/năm cụ thểWHERE YEAR(date_col)=2019 AND MONTH(date_col)=4

Lưu ý hiệu suất

  • Nên tạo INDEX cho cột ngày thường xuyên lọc
  • Tránh dùng hàm trên cột trong WHERE (như DATE(col)) nếu có thể, vì sẽ làm mất index
  • Thay vào đó: WHERE col >= '2019-04-01' AND col < '2019-04-02' cho DATETIME