2012-04-02 120 views
0

好吧,我有我已經與他們datetime其保存在我的MySQL日期時間字段我的所有用戶註冊爲2012-03-31 12:13:42數據庫,現在我想獲取的COUNT用戶根據yearmonth如何根據特定月份和今年的MySQL PHP獲取數據

由於我想爲此目的提供圖表數據,我希望在Januaryfebmarch等等中添加總客戶....在特定年份。

即它必須是year specific2010Jan可以說52客戶2010Feb可以說72客戶

注意:我想要執行的查詢是使用PHP和Mysql。

回答

7

您可以使用MySQL日期函數

SELECT YEAR(date_field) as stat_year, 
     MONTH(date_field) as stat_month, 
     COUNT(*) as stat_count 
FROM `table` 
GROUP BY stat_year,stat_month 

如果你只想要一個特定年/月的結果,您可以添加條件,WHERE子句(和刪除GROUP BY)這樣

SELECT COUNT(*) as stat_count 
FROM `table` 
WHERE YEAR(date_field) = 2012 
    AND MONTH(date_field) = 3 
+0

什麼是date_field?我有我的mysql字段作爲'datetile',所以它存儲值'2012-03-31 12:13:42' .... – 2012-04-02 06:26:16

+0

這是他用來指存儲日期的字段的名稱。你沒有提供它,所以他用它作爲佔位符。只需將'date_field'替換爲您給出該字段的任何名稱即可。 – MichaelRushton 2012-04-02 06:44:49

+0

是其實'datetime':P – 2012-04-02 06:45:23

1

有不同的SQL,會做的伎倆,這裏是一個...

SELECT COUNT(dt), DATE_FORMAT(dt, '%Y-%b') AS df FROM foo GROUP BY df; 

其中foo是你的表名,dt是datetime列。請注意,這將在每行上應用DATE_FORMAT函數。此外,你可以根據需要改變格式,例如在數字月份中使用%m,在完整月份名稱中使用%M等。根據需要添加where子句以進行過濾。下面的SQL幾乎是一樣的...

SELECT COUNT(dt), YEAR(dt) AS y, MONTH(dt) AS m FROM foo GROUP BY y, m; 
+0

這裏是什麼'df'?這是一個錯字..? – 2012-04-02 06:51:44

+0

這是我用於選擇字段DATE_FORMAT(dt,'%Y-%b')的別名。請注意,您可以別名選擇輸出字段名稱,例如SELECT COUNT(*)AS cnt,... – Herbie 2012-04-02 07:41:33