183

我对如何按日期格式排序有点困惑。

对于格式YYYY-MM-DD,您可以这样做:...ORDER BY date DESC...

你会如何订购DD/MM/YYYY

这不起作用:

SELECT * FROM $table ORDER BY DATE_FORMAT(Date, '%Y%m%d') DESC LIMIT 14
4

8 回答 8

232

猜你可能只是想格式化输出日期?那么这就是你所追求的

SELECT *, DATE_FORMAT(date,'%d/%m/%Y') AS niceDate 
FROM table 
ORDER BY date DESC 
LIMIT 0,14

还是您真的想按年前月前日排序?

于 2012-05-17T14:29:18.970 回答
175

您可以使用STR_TO_DATE()将字符串转换为 MySQL 日期值和ORDER BY结果:

ORDER BY STR_TO_DATE(datestring, '%d/%m/%Y')

但是,最好将列转换为DATE数据类型,而不是使用字符串。

于 2012-05-17T14:28:23.323 回答
46
SELECT DATE_FORMAT(somedate, "%d/%m/%Y") AS formatted_date
..........
ORDER BY formatted_date DESC
于 2012-05-17T14:28:36.913 回答
41

利用:

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

于 2015-01-20T19:49:33.190 回答
24
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");

输出为2019 年 10 月 5 日下午 7:30

于 2019-10-11T06:47:50.503 回答
6

就我而言,这有效

str_to_date(date, '%e/%m/%Y' )
于 2014-10-06T09:26:51.097 回答
6

如果小时很重要,我使用str_to_date(date, '%d/%m/%Y %T' )%T以格式显示小时hh:mm:ss

于 2016-09-14T18:54:33.140 回答
4

ORDER BY 日期类型不依赖于日期格式,日期格式仅用于显示,在数据库中,它们是相同的数据。

于 2012-05-17T14:27:03.857 回答