Bạn có thể sử dụng ORDER BY STR_TO_DATE(). Hãy cùng tạo một bảng trước:
mysql> CREATE TABLE DemoTable (
-> DueTime VARCHAR(20)
-> ); Query OK, 0 rows affected (0.87 sec)
Chèn một số bản ghi vào bảng bằng lệnh INSERT:
mysql> INSERT INTO DemoTable VALUES('7:30AM'); Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES('9:00PM'); Query OK, 1 row affected (0.23 sec)
mysql> INSERT INTO DemoTable VALUES('11:00PM'); Query OK, 1 row affected (0.13 sec)
Hiển thị tất cả bản ghi từ bảng bằng lệnh SELECT:
mysql> SELECT * FROM DemoTable;
Kết quả sẽ như sau:
+---------+ | DueTime | +---------+ | 7:30AM | | 9:00PM | | 11:00PM | +---------+ 3 rows in set (0.00 sec)
Dưới đây là truy vấn để lấy bản ghi có thời gian gần nhất:
mysql> SELECT * FROM DemoTable
-> ORDER BY STR_TO_DATE(DueTime, '%h:%i%p') DESC LIMIT 1;
Kết quả sẽ như sau:
+---------+ | DueTime | +---------+ | 11:00PM | +---------+ 1 row in set (0.00 sec)