我对如何按日期格式排序有些困惑。
对于格式,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
Answers:
您可以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
就我而言,这有效
str_to_date(date, '%e/%m/%Y' )
如果小时很重要,我会使用str_to_date(date, '%d/%m/%Y %T' )
,%T
以格式显示小时hh:mm:ss
。
%T
以时间格式显示值。顺便说一句,你得到了我的支持。