Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จัดรูปแบบวันที่ DD/MM/YYYY ด้วยคำสั่ง SELECT และ ORDER BY ใน MySQL

การจัดรูปแบบวันที่ในรูปแบบ DD/MM/YYYY และเรียงลำดับจากมากไปน้อย

เมื่อต้องการจัดรูปแบบวันที่ให้อยู่ในรูปแบบ DD/MM/YYYY และเรียงลำดับข้อมูลจากวันที่ล่าสุดไปเก่าสุด (Descending) สามารถใช้ฟังก์ชัน STR_TO_DATE() ร่วมกับคำสั่ง ORDER BY ได้

รูปแบบคำสั่ง (Syntax)

SELECT * FROM yourTableName 
WHERE yourDatetimeColumnName 
ORDER BY STR_TO_DATE(yourDatetimeColumnName, '%d/%m/%Y') DESC;

คำสั่งด้านบนจะดึงข้อมูลทั้งหมดและเรียงลำดับตามวันที่จากใหม่ไปเก่า โดยแปลงสตริงวันที่ให้เป็นค่าประเภท DATE ก่อนจึงทำการเรียงลำดับ

ตัวอย่างการใช้งานจริง

สร้างตารางตัวอย่างชื่อ DateFormatWithSelect:

CREATE TABLE DateFormatWithSelect (
    UserId INT,
    UserName VARCHAR(100),
    UserLoginDatetime VARCHAR(100)
);

เพิ่มข้อมูลตัวอย่าง:

INSERT INTO DateFormatWithSelect VALUES 
(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');

แสดงข้อมูลก่อนเรียงลำดับ:

SELECT * FROM DateFormatWithSelect;

ผลลัพธ์:

UserIdUserNameUserLoginDatetime
101John20/10/2016
102David21/09/2015
103Carol21/12/2018
104Mike2/8/2014
105Sam21/11/2017
106Bob21/12/2013

คำสั่งเรียงลำดับวันที่จากใหม่ไปเก่า:

SELECT * FROM DateFormatWithSelect 
WHERE UserLoginDatetime 
ORDER BY STR_TO_DATE(UserLoginDatetime, '%d/%m/%Y') DESC;

ผลลัพธ์หลังเรียงลำดับ:

UserIdUserNameUserLoginDatetime
103Carol21/12/2018
105Sam21/11/2017
101John20/10/2016
102David21/09/2015
104Mike2/8/2014
106Bob21/12/2013

หมายเหตุ: รูปแบบ %d/%m/%Y หมายถึง วันที่/เดือน/ปี 4 หลัก สามารถปรับเปลี่ยนรูปแบบได้ตามข้อมูลที่มีอยู่ เช่น %d-%m-%Y สำหรับวันที่คั่นด้วยขีดกลาง