Để định dạng ngày theo kiểu DD/MM/YYYY và sắp xếp theo thứ tự giảm dần, bạn sử dụng hàm STR_TO_DATE trong mệnh đề ORDER BY. Cú pháp như sau:
SELECT * FROM ten_bang WHERE ten_cot_datetime ORDER BY STR_TO_DATE(ten_cot_datetime, '%d/%m/%Y') DESC;
Cú pháp trên sẽ trả về các bản ghi được sắp xếp giảm dần theo ngày. Để hiểu rõ hơn, hãy tạo một bảng ví dụ:
mysql> CREATE TABLE DateFormatWithSelect (
-> UserId INT,
-> UserName VARCHAR(100),
-> UserLoginDatetime VARCHAR(100)
-> );
Chèn một số dữ liệu mẫu:
mysql> INSERT INTO DateFormatWithSelect VALUES(101,'John','20/10/2016'); mysql> INSERT INTO DateFormatWithSelect VALUES(102,'David','21/09/2015'); mysql> INSERT INTO DateFormatWithSelect VALUES(103,'Carol','21/12/2018'); mysql> INSERT INTO DateFormatWithSelect VALUES(104,'Mike','2/8/2014'); mysql> INSERT INTO DateFormatWithSelect VALUES(105,'Sam','21/11/2017'); mysql> INSERT INTO DateFormatWithSelect VALUES(106,'Bob','21/12/2013');
Hiển thị toàn bộ dữ liệu:
mysql> SELECT * FROM DateFormatWithSelect;
Kết quả:
+--------+----------+-------------------+ | UserId | UserName | UserLoginDatetime | +--------+----------+-------------------+ | 101 | John | 20/10/2016 | | 102 | David | 21/09/2015 | | 103 | Carol | 21/12/2018 | | 104 | Mike | 2/8/2014 | | 105 | Sam | 21/11/2017 | | 106 | Bob | 21/12/2013 | +--------+----------+-------------------+
Thực hiện truy vấn sắp xếp giảm dần theo định dạng DD/MM/YYYY:
mysql> SELECT * FROM DateFormatWithSelect
-> ORDER BY STR_TO_DATE(UserLoginDatetime, '%d/%m/%Y') DESC;
Kết quả
+--------+----------+-------------------+ | UserId | UserName | UserLoginDatetime | +--------+----------+-------------------+ | 103 | Carol | 21/12/2018 | | 105 | Sam | 21/11/2017 | | 101 | John | 20/10/2016 | | 102 | David | 21/09/2015 | | 104 | Mike | 2/8/2014 | | 106 | Bob | 21/12/2013 | +--------+----------+-------------------+
Lưu ý: Cột UserLoginDatetime được lưu dưới dạng chuỗi (VARCHAR), do đó cần chuyển đổi sang kiểu DATE để sắp xếp chính xác. Hàm STR_TO_DATE với định dạng '%d/%m/%Y' xử lý cả ngày/tháng có 1 hoặc 2 chữ số.