Bạn có thể truy vấn dữ liệu giữa hai ngày bằng cách sử dụng toán tử BETWEEN. Cú pháp như sau:
SELECT * FROM ten_bang WHERE ten_cot BETWEEN 'ngay_bat_dau' AND CURDATE();
Hàm CURDATE() hoặc NOW() đều hoạt động. Để hiểu rõ hơn, hãy tạo một bảng ví dụ:
mysql> CREATE TABLE DemoKhoangNgay (
-> NgayBatDau DATETIME
-> );
Chèn một số bản ghi vào bảng:
mysql> INSERT INTO DemoKhoangNgay VALUES (DATE_ADD(NOW(), INTERVAL -1 YEAR)); mysql> INSERT INTO DemoKhoangNgay VALUES (DATE_ADD(NOW(), INTERVAL -2 YEAR)); mysql> INSERT INTO DemoKhoangNgay VALUES (DATE_ADD(NOW(), INTERVAL -3 YEAR)); mysql> INSERT INTO DemoKhoangNgay VALUES (DATE_ADD(NOW(), INTERVAL 1 YEAR)); mysql> INSERT INTO DemoKhoangNgay VALUES (DATE_ADD(NOW(), INTERVAL 2 YEAR)); mysql> INSERT INTO DemoKhoangNgay VALUES (DATE_ADD(NOW(), INTERVAL 3 YEAR));
Hiển thị tất cả bản ghi:
mysql> SELECT * FROM DemoKhoangNgay;
Kết quả:
+---------------------+ | NgayBatDau | +---------------------+ | 2017-12-08 11:45:47 | | 2016-12-08 11:45:56 | | 2015-12-08 11:46:01 | | 2019-12-08 11:46:05 | | 2020-12-08 11:46:11 | | 2021-12-08 11:46:15 | +---------------------+
Thực hiện truy vấn giữa hai ngày:
mysql> SELECT * FROM DemoKhoangNgay WHERE NgayBatDau BETWEEN '2014-08-12' AND CURDATE();
Kết quả (chỉ các bản ghi từ 2015-2017):
+---------------------+ | NgayBatDau | +---------------------+ | 2017-12-08 11:45:47 | | 2016-12-08 11:45:56 | | 2015-12-08 11:46:01 | +---------------------+
Sử dụng ORDER BY để sắp xếp kết quả:
mysql> SELECT * FROM DemoKhoangNgay WHERE NgayBatDau BETWEEN '2014-08-12' AND CURDATE() ORDER BY NgayBatDau;
Kết quả được sắp xếp theo thứ tự thời gian:
+---------------------+ | NgayBatDau | +---------------------+ | 2015-12-08 11:46:01 | | 2016-12-08 11:45:56 | | 2017-12-08 11:45:47 | +---------------------+