2014-01-07 77 views
4

我已經在MySQL以下查詢:GROUP BY本月DATETIME場

SELECT title, 
     added_on 
FROM title 

結果是這樣的:

Somos Tão Jovens      2013-10-10 16:54:10 
Moulin Rouge - Amor em Vermelho   2013-10-10 16:55:03 
Rocky Horror Picture Show (Legendado) 2013-10-10 16:58:30 
The X-Files: I Want to Believe   2013-10-10 22:39:11 

我想獲得在每個月的標題計數,這樣的結果是這樣的:

Count    Month 
42     2013-10-01 
20     3013-09-01 

我能想到的得到這個最接近的是:

SELECT Count(*), 
     Date(timestamp) 
FROM title 
GROUP BY Date(timestamp) 

但是,這只是分組的一天,而不是一個月。我如何在這個月份分組?

+0

你說,你用這個查詢做u認爲你會得到正確的答案?正如你想按月分組,但在這裏你正在採取全日期..那麼怎麼可能? –

回答

20

你能試試嗎?

select count(*), DATE_FORMAT(timestamp, "%Y-%m-01") 
from title 
group by DATE_FORMAT(timestamp, "%Y-%m-01") 

請注意,MONTH()不能區分 '2013-01-01' 和 '2014年1月1日' 如下。

mysql> SELECT MONTH('2013-01-01'), MONTH('2014-01-01'); 
+---------------------+---------------------+ 
| MONTH('2013-01-01') | MONTH('2014-01-01') | 
+---------------------+---------------------+ 
|     1 |     1 | 
+---------------------+---------------------+ 
+0

這看起來不錯,謝謝! – David542

+0

@ David542我的榮幸;-) –

+0

其實它很好... –

4
SELECT Count(*), 
     Date(timestamp) 
FROM title 
GROUP BY Month(timestamp) 

編輯:很顯然,如果它的事項在結果中顯示該月的第一天,你在一些其他的答案:)提到DATE_FORMAT(timestamp, "%Y-%m-01")事情

+0

如果日期時間值跨越年份邊界,這將產生錯誤的結果 – peterm

+0

他只要求它按月分組,所以「錯誤的結果」可能正是他正在尋找:)否則GROUP BY YEAR(時間戳),MONTH(時間戳)將做到保持多年分離的訣竅。 – NewInTheBusiness

0
select count(*), date(timestamp) from title group by MONTHNAME(timestamp) 
1
select 
     count(*) as Count, 
     MONTH(timestamp)+"-"+YEAR(timestamp) as Month 
from 
     title 
GROUP BY 
     MONTH(tumestamp); 
+0

那麼它不應該是'選擇條款中的日期(時間戳)'! –

+0

準確地說,我的問題是 –