2010-12-20 85 views
0

我有一個任務是根據數據庫結果製作網站文章統計信息。我需要計算每月添加的文章數量,並將這些結果傳遞給JavaScript stats函數。查找在這段時間內每月的第一天和最後一天

首先我在做什麼是尋找在哪些文章已經添加了整個週期:

SELECT MIN(date) as startdate FROM articles LIMIT 1 

SELECT MAX(date) as enddate FROM articles LIMIT 1 

現在我有與$startDate開始,以$endDate結束的時期。這些變量是數據庫中的unix時間戳。數據庫中的date列也是unix時間戳。

接下來,我應該找到的文章數量已經在每個月被添加在foreach循環做一個查詢,如:

SELECT COUNT(id) as total FROM articles 
    WHERE date > ".$startMonth." AND date < ".$endMonth 

但令我需要找到的第一個和每個最後的日子月內。而且我此時陷入困境。所以,請你能建議我如何找到這些陣列的第一天和最後一天。我認爲我應該在一段時間循環中製作類似strtotime("+1 month",$date)的文件,直到$startDate等於$endDate。提前致謝。

Upd。數據庫中共有46篇文章。我什麼願意將是按月份劃分結果:

SELECT date, COUNT(id) as total FROM `articles` 
    WHERE `author`=$author 
    GROUP BY date_format(date, '%Y-%m') 

結果: 月帖子 11-2010 13 12-2010 33

+0

請使用正是這一點:'SELECT DATE_FORMAT(日期,'%Y-%m'),COUNT(*)作爲總的FROM文章GROUP BY 1;' – ajreal 2010-12-20 12:42:14

+0

也許這是需要的格式? SELECT date_format(date,'%M%Y'),COUNT(*)作爲總的FROM文章GROUP BY 1;' – thirtydot 2010-12-20 15:01:40

+0

SELECT列錯誤,使用'SELECT date_format(date,'%Y-%m') ,COUNT(*)作爲總FROM文章GROUP BY 1;'OR''SELECT date_format(date,'%m-%Y'),COUNT(*)作爲總FROM文章GROUP BY 1;' – ajreal 2010-12-21 00:49:08

回答

2

看來你可以使用GROUP BY做到這一點,像

SELECT date_format(`date`, '%Y-%m'), COUNT(id) as total 
FROM articles 
GROUP BY date_format(`date`, '%Y-%m'); 

而且你不需要日期界限......

+1

或者你可以簡單使用' GROUP BY 1' – ariefbayu 2010-12-20 10:19:02

+0

但是,儘管事實上我在while循環中獲取結果,並且在11月和12月添加了文章,但它會選擇所有文章的數量作爲第一個月。 – laurencepeter5 2010-12-20 12:06:41

+0

@ laurencepeter5 - 小組是通過溝渠while循環... – ajreal 2010-12-20 12:08:15

相關問題