Vấn đề: Cột VARCHAR chứa ngày (dd/mm/yyyy)
Cần chuyển sang DATE để so sánh với CURDATE().
Tạo bảng
mysql> CREATE TABLE DemoTable1397 (
-> AdmissionDate VARCHAR(40)
-> );
Query OK, 0 rows affected (0.97 sec)
mysql> INSERT INTO DemoTable1397 VALUES
-> ('01/04/2019'),('27/09/2019'),('29/09/2018'),('29/09/2019');
Dữ liệu
mysql> SELECT * FROM DemoTable1397;
+---------------+
| AdmissionDate |
+---------------+
| 01/04/2019 |
| 27/09/2019 |
| 29/09/2018 |
| 29/09/2019 |
+---------------+
Ngày hiện tại
mysql> SELECT CURDATE();
+------------+
| CURDATE() |
+------------+
| 2019-09-27 |
+------------+
Truy vấn: STR_TO_DATE chuyển đổi rồi so sánh
mysql> SELECT * FROM DemoTable1397
-> WHERE STR_TO_DATE(AdmissionDate, '%d/%m/%Y') > CURDATE();
Kết quả: Chỉ ngày 29/09/2019 > 2019-09-27
+---------------+
| AdmissionDate |
+---------------+
| 29/09/2019 |
+---------------+
Mẹo: Luôn lưu ngày theo kiểu DATE/DATETIME. Nếu buộc phải VARCHAR, hãy tạo index trên cột ảo (generated column) đã chuyển đổi để tối ưu truy vấn.