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

Sắp xếp theo ngày đặt với kiểu varchar trong MySQL

Sắp xếp theo ngày đặt với kiểu varchar trong MySQL

Để thực hiện việc này, hãy sử dụng ORDER BY STR_TO_DATE trong MySQL như trong cú pháp sau:

select * from yourTableName ORDER BY STR_TO_DATE(yourColumnName, '%M %Y') DESC;

Hãy tạo một bảng trước:

mysql> create table DemoTable678(DueDate varchar(200));
Query OK, 0 rows affected (0.62 sec)

Chèn một số bản ghi vào bảng bằng lệnh insert. Chúng ta chèn các ngày ở đây:

mysql> insert into DemoTable678 values('March 2019');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable678 values('November 2018');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable678 values('January 2019');
Query OK, 1 row affected (0.18 sec)

Hiển thị tất cả các bản ghi từ bảng bằng câu lệnh select:

mysql> select * from DemoTable678;

Điều này sẽ tạo ra đầu ra sau:

+---------------+
| DueDate       |
+---------------+
| March 2019    |
| November 2018 |
| January 2019  |
+---------------+
3 rows in set (0.00 sec)

Truy vấn sau sắp xếp theo ngày đặt với kiểu varchar:

mysql> select * from DemoTable678 ORDER BY STR_TO_DATE(DueDate, '%M %Y') DESC;

Điều này sẽ tạo ra đầu ra sau:

+---------------+
| DueDate       |
+---------------+
| March 2019    |
| January 2019  |
| November 2018 |
+---------------+
3 rows in set (0.00 sec)

Giải thích: STR_TO_DATE(DueDate, '%M %Y') chuyển đổi chuỗi như 'March 2019' thành giá trị DATE để so sánh đúng theo thời gian, thay vì so sánh chuỗi theo thứ tự bảng chữ cái.