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

So sánh ngày khi AdmissionDate (VARCHAR) nhỏ hơn ngày hiện tại trong MySQL

Yêu cầu

Cột AdmissionDate lưu chuỗi như '13-Sep-2019'. Cần lọc các bản ghi có ngày nhỏ hơn hôm nay (giả sử hôm nay là 14-Sep-2019).

1. Tạo bảng

mysql> create table DemoTable (
    AdmissionDate varchar(50)
);
Query OK, 0 rows affected (0.63 sec)

2. Chèn dữ liệu

mysql> insert into DemoTable values('15-Sep-2019');
mysql> insert into DemoTable values('14-Sep-2019');
mysql> insert into DemoTable values('13-Sep-2016');
mysql> insert into DemoTable values('13-Sep-2019');
mysql> insert into DemoTable values('13-Sep-2020');

3. Xem dữ liệu

mysql> select * from DemoTable;
+---------------+
| AdmissionDate |
+---------------+
| 15-Sep-2019   |
| 14-Sep-2019   |
| 13-Sep-2016   |
| 13-Sep-2019   |
| 13-Sep-2020   |
+---------------+
5 rows in set (0.00 sec)

4. Truy vấn so sánh sau khi chuyển đổi

mysql> select * from DemoTable
    where str_to_date(AdmissionDate, '%d-%b-%Y') < CURDATE();

Kết quả (chỉ các ngày trước 14-Sep-2019):

+---------------+
| AdmissionDate |
+---------------+
| 13-Sep-2016   |
| 13-Sep-2019   |
+---------------+
2 rows in set (0.00 sec)

Lưu ý: %b là tên tháng viết tắt 3 chữ cái (Jan, Feb, ...). CURDATE() trả về ngày hiện tại kiểu DATE.