我有一个来自mysql数据库的列表,其中包括需要相应排序的月份和年份。目前,返回的列表(ordered DESC)如下所示:

122015 - (Dec 2015)
112015 - (Nov 2015)
102015 - (Oct 2015)
92015 - (Sep 2015)
82015 - (Aug 2015)
12016 - (Jan 2016)

我希望上面的列表遵循逻辑排序,2016年1月是列表的第一位。
12016 - (Jan 2016)
122015 - (Dec 2015)
112015 - (Nov 2015)
102015 - (Oct 2015)
92015 - (Sep 2015)
82015 - (Aug 2015)

如何在php中实现这一点?
*更新
我使用的sql查询是:
SELECT mnthyears FROM dates ORDER BY mnthyears DESC

最佳答案

使用mysql LPAD(padding函数)和SUBSTR方法结合使用ORDER BY子句:

SELECT mnthyears
FROM dates
ORDER BY SUBSTR(LPAD( mnthyears, 19, '0'),3,4) DESC, SUBSTR(LPAD(mnthyears,19,'0'),1,2) DESC

但是,如果只有5或6位字符串(没有“- (Dec 2015)”),只需将19改为6

07-24 09:34