Vấn đề
Cột DueDate kiểu VARCHAR lưu chuỗi ngày như '14-AUG-2012'. Cần so sánh chính xác ngày bằng cách chuyển đổi sang DATE.
1. Tạo bảng
mysql> create table DemoTable (
DueDate varchar(60)
);
Query OK, 0 rows affected (0.71 sec)
2. Chèn dữ liệu
mysql> insert into DemoTable values('12-AUG-2016');
mysql> insert into DemoTable values('14-AUG-2018');
mysql> insert into DemoTable values('24-AUG-2012');
mysql> insert into DemoTable values('14-AUG-2012');
3. Xem dữ liệu
mysql> select * from DemoTable;
+-------------+ | DueDate | +-------------+ | 12-AUG-2016 | | 14-AUG-2018 | | 24-AUG-2012 | | 14-AUG-2012 | +-------------+ 4 rows in set (0.00 sec)
4. Truy vấn so sánh ngày bằng STR_TO_DATE
mysql> select * from DemoTable
where str_to_date(DueDate, '%d-%M-%Y') = str_to_date('14-AUG-2012', '%d-%M-%Y');
Kết quả:
+-------------+ | DueDate | +-------------+ | 14-AUG-2012 | +-------------+ 1 row in set (0.00 sec)
Lưu ý: Định dạng %d-%M-%Y khớp với 'dd-MMM-yyyy' (ngày-số, tên tháng viết tắt 3 chữ cái, năm 4 chữ số).