ฉันสับสนเล็กน้อยเกี่ยวกับวิธีสั่งซื้อตามรูปแบบวันที่
สำหรับรูปแบบที่YYYY-MM-DD
คุณจะทำ:...ORDER BY date DESC...
วิธีที่คุณจะสั่งซื้อโดยDD/MM/YYYY
?
สิ่งนี้ไม่ทำงาน:
SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
ฉันสับสนเล็กน้อยเกี่ยวกับวิธีสั่งซื้อตามรูปแบบวันที่
สำหรับรูปแบบที่YYYY-MM-DD
คุณจะทำ:...ORDER BY date DESC...
วิธีที่คุณจะสั่งซื้อโดยDD/MM/YYYY
?
สิ่งนี้ไม่ทำงาน:
SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
คำตอบ:
คุณสามารถใช้STR_TO_DATE()
ในการแปลงสตริงของคุณเป็นค่าวันที่ MySQL และORDER BY
ผลลัพธ์:
ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')
อย่างไรก็ตามคุณควรแปลงคอลัมน์ให้เป็นDATE
ประเภทข้อมูลแทนที่จะใช้สตริง
คาดเดาว่าคุณอาจต้องการจัดรูปแบบวันที่ส่งออกหรือไม่ นี่คือสิ่งที่คุณเป็นหลังจากนั้น
SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate
FROM table
ORDER BY date DESC
LIMIT 0,14
หรือคุณต้องการเรียงตามวันก่อนเดือนก่อนปีจริง ๆ ?
mysql> DESCRIBE Table;
และวางผลลัพธ์
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
%l
ได้ผล? มันทำให้ทุกเดือนและผมก็มีการเปลี่ยนแปลงไป12
%m
ใช้:
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y") AS 'NAME'
SELECT DATE_FORMAT(NAME_COLUMN, "%d/%l/%Y %H:%i:%s") AS 'NAME'
การอ้างอิง: https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html
SELECT DATE_FORMAT(COLUMN_NAME, "%d/%m/%Y %h:%i %p");
หรือ
SELECT DATE_FORMAT("2019-05-10 19:30:10", "%d/%m/%Y %h:%i %p");
OUTPUT คือ10/05/2019 19:30 น
สำหรับกรณีของฉันนี้ใช้งานได้
str_to_date(date, '%e/%m/%Y' )
ถ้าชั่วโมงเป็นสิ่งสำคัญที่ผมใช้ในstr_to_date(date, '%d/%m/%Y %T' )
การแสดงให้เห็นถึงชั่วโมงในรูปแบบ%T
hh:mm:ss
%T
แสดงค่าด้วยรูปแบบเวลา โดยวิธีการที่คุณมี upvote ของฉัน
เรียงตามประเภทวันที่ไม่ได้ขึ้นอยู่กับรูปแบบวันที่รูปแบบวันที่มีไว้สำหรับแสดงในฐานข้อมูลเท่านั้นเป็นข้อมูลเดียวกัน