2017-08-24 93 views
0

這是我的查詢:MySQL的排序按日期與GROUP BY日期格式爲字母

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')

請給一個解決方案

回答

1

當然是按字母順序排列。您正在按字符串排序。嘗試:

ORDER BY MIN(date) ASC 

這將日期值排序。

請注意,在您的問題的原始版本中,您的單引號圍繞date。這不會按任何順序排序,因爲'date'是一個帶有四個字母單詞的字符串。

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 
+1

使用反引號。 https://stackoverflow.com/questions/11321491/when-to-use-single-quotes-double-quotes-and-backticks – Barmar

+0

啊,是的。你是對的。他們在原始問題的複製/粘貼過程中得到了轉換... – henrikenblom

+0

在這種情況下,'date'也應該在'SELECT'中,或者不是?謝謝 –

-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