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

Lấy một ngày đã sắp xếp từ cột chuỗi với LIMIT 1 trong MySQL

Khi cột ngày lưu dưới dạng chuỗi (VARCHAR), dùng STR_TO_DATE() trong ORDER BY để sắp xếp đúng thời gian, sau đó LIMIT 1 lấy hàng đầu/đuôi.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable (DueDate VARCHAR(100));
Query OK, 0 rows affected (1.16 sec)
mysql> INSERT INTO DemoTable VALUES('10-06-2019'), ('01-12-2016'), ('31-01-2018');
Query OK, 3 rows affected (0.42 sec)

Truy vấn lấy ngày sớm nhất

mysql> SELECT * FROM DemoTable ORDER BY STR_TO_DATE(DueDate, '%d-%m-%Y') LIMIT 1;

Kết quả:

+------------+
| DueDate    |
+------------+
| 01-12-2016 |
+------------+
1 row in set (0.00 sec)

Để lấy ngày muộn nhất: ORDER BY STR_TO_DATE(DueDate, '%d-%m-%Y') DESC LIMIT 1

Hiệu suất: Không dùng index. Nên chuyển cột sang kiểu DATE thực.