MySQL按日期排序GROUP BY DATE FORMAT是按字母顺序排列的

时间:2017-08-24 18:45:34

标签: mysql sql mariadb

这是我的疑问:

Select Date_format(`date`, '%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`, '%b %Y')
ORDER BY Date_format(`date`, '%b %Y') ASC

答案是按字母顺序排列的,因为date_format将日期转换为字符串,我需要按日期排序,但是,分组依据是问题所在。我只需要group by

Date_format('date','%b %Y')

请提供解决方案

3 个答案:

答案 0 :(得分:2)

当然是按字母顺序排列的。您按字符串排序。尝试:

ORDER BY MIN(date) ASC

这将按日期值排序。

请注意,在问题的原始版本中,date周围有单引号。这根本不会排序,因为'date'是一个带有四个字母单词的字符串。

答案 1 :(得分:0)

这样做:

Select Date_format(`date`,'%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`,'%b %Y')
ORDER BY `date` ASC

答案 2 :(得分:-1)

我用双引号解决了这个问题

Select Date_format(`date`, '%b %Y') as 'Categories',
..... as 'a1',....... as 'a2'
FROM table1
GROUP BY Date_format(`date`, '%b %Y')
ORDER BY "categories" ASC