Giới thiệu
Để lấy ngày lớn nhất (mới nhất) từ một cột kiểu DATE hoặc DATETIME, cách đơn giản nhất là sắp xếp giảm dần (DESC) và lấy bản ghi đầu tiên với LIMIT 1.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
DueDate DATE
);
mysql> INSERT INTO DemoTable VALUES
('2018-10-01'), ('2016-12-31'), ('2019-07-02'),
('2015-01-12'), ('2019-04-26');
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+------------+ | DueDate | +------------+ | 2018-10-01 | | 2016-12-31 | | 2019-07-02 | | 2015-01-12 | | 2019-04-26 | +------------+
Truy vấn lấy ngày mới nhất
mysql> SELECT * FROM DemoTable ORDER BY DueDate DESC LIMIT 1;
Kết quả
+------------+ | DueDate | +------------+ | 2019-07-02 | +------------+
Phương pháp thay thế: dùng MAX()
mysql> SELECT MAX(DueDate) FROM DemoTable;
Cách này trả về giá trị ngày lớn nhất nhưng không trả về toàn bộ dòng dữ liệu liên quan.
Lưu ý hiệu năng
- Nên tạo index cho cột ngày nếu bảng lớn và truy vấn thường xuyên.
ORDER BY ... LIMIT 1tận dụng index tốt nếu index được tạo đúng cách.