Khi cột timestamp lưu dưới dạng chuỗi (VARCHAR) với định dạng phức tạp, dùng STR_TO_DATE() trong ORDER BY để parse thành DATETIME rồi sắp xếp.
Tạo bảng và dữ liệu timestamp chuỗi
mysql> CREATE TABLE DemoTable (`timestamp` VARCHAR(100)); Query OK, 0 rows affected (0.56 sec)
mysql> INSERT INTO DemoTable VALUES('06/22/2019 01:10:20 PM'), ('06/22/2019 12:00:27 PM'), ('06/22/2019 06:56:20 AM'), ('06/22/2019 07:10:11 AM');
Query OK, 4 rows affected (0.13 sec)
Truy vấn sắp xếp theo thời gian thực
mysql> SELECT * FROM DemoTable ORDER BY STR_TO_DATE(`timestamp`, '%m/%d/%Y%h:%i:%s %p');
Kết quả (theo thứ tự thời gian thực):
+------------------------+ | timestamp | +------------------------+ | 06/22/2019 06:56:20 AM | | 06/22/2019 07:10:11 AM | | 06/22/2019 12:00:27 PM | | 06/22/2019 01:10:20 PM | +------------------------+ 4 rows in set (0.00 sec)
Format specifiers:
%m: tháng (01-12)%d: ngày (01-31)%Y: năm 4 chữ số%h: giờ 12h (01-12)%i: phút%s: giây%p: AM/PM