2013-11-26 36 views
2

分組MySQL的結果集我有一個MySQL表檢索按月

Create table temp_table (
Tmp_id int(10) auto_increment, 
paid tinyint default 0, 
date_received DATETIME NULL, 
PRIMARY KEY (Tmp_id) 
) 

我要查詢已支付= 0的所有記錄,但我想它的結果是,其中支付的月= 0計算結果爲真正。

例如,財務部門可以看到一個簡短的記錄列表,只顯示必要的月份。

感謝您的幫助。

+0

您必須爲GROUP BY設置一個月份列。 – duffymo

回答

1

您可以使用以下方法來獲取月份和年份:

SELECT YEAR(Date_Received) AS `Year`, 
     MONTH(Date_Received) AS `Month`, 
     COUNT(*) AS Records 
FROM Temp_Table 
WHERE Paid = 0 
GROUP BY YEAR(Date_Received), MONTH(Date_Received); 

或者,如果你想保持它的日期格式,你可以使用:

SELECT DATE_FORMAT(Date_Received,'%Y-%m-01') AS MonthStart 
FROM Temp_Table 
WHERE Paid = 0 
GROUP BY DATE_FORMAT(Date_Received,'%Y-%m-01'); 

這會簡單地把所有日期進入本月的第一個月,所以2013年11月的所有記錄將顯示爲2013-11-01,如果您想將日期發送到應用程序層,那麼您仍然可以將其作爲日期進行製作(如更改語言/顯示格式)。

+0

這很好。有沒有辦法實際選擇這個解決方案? – user2977468

+0

我喜歡本地功能,這減少了我的代碼工作。謝謝Gareth! – user2977468

+0

[點擊答案旁邊的綠色勾號](http://meta.stackexchange.com/a/5235/179361),雖然[有15分鐘的時間限制](http://meta.stackexchange.com/ q/50697),這可能還沒有過去。 – GarethD