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

Cách chọn bản ghi cụ thể khi cột ngày lưu ở định dạng VARCHAR trong MySQL

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ố).