2011-11-11 55 views
0

我正在使用PHP/SQL等的博客,我遇到了一些我認爲對於我的SQL知識來說太高級(顯然)的東西。我正在創建一個存檔部分,在製作帖子時,它會以UNIX時間戳格式存儲帖子的日期/時間。不過,我想存檔顯示是這樣的:在SQL中限制unix時間戳

Date  Year Post Count 
-------- ---- ---------- 
November 2011 2 
December 2011 1 

我可以很容易地得到這樣的:

Date  Year Post Count 
-------- ---- ---------- 
November 2011 2 
November 2011 2 
December 2011 1 

希望你能明白我想要的目的。我給這家當前的SQL語句是:

SELECT `post_date` FROM `blog_posts` ORDER BY `post_date` DESC 

PHP處理大多數排序的,有一個方法可以讓我在PHP中實現這一點,但我敢肯定有一個更簡單的方法在SQL。

希望有人能幫忙。

+2

的數據庫您使用的?語法取決於數據庫。 –

回答

1

MySQL (5.5)將接近以下幾點:

SELECT MONTHNAME(post_date) AS month_col, 
YEAR(post_date) AS year_col, 
COUNT(*) AS num_posts 
FROM blog_posts 
GROUP BY YEAR(post_date), MONTH(post_date) 
ORDER BY year_col, month_col DESC; 

將返回:

December, 2011, 3 
November, 2011, 2 
December, 2010, 1 
+0

謝謝老兄,會試試這個! –

+0

感謝你的例子設法排序 'SELECT MONTHNAME(FROM_UNIXTIME('post_date'))AS archiveMonth,YEAR(FROM_UNIXTIME('post_date'))作爲'archiveYear',COUNT(*)作爲'num_posts'從'blog_posts 'GROUP BY'archiveMonth' ORDER BY'archiveMonth' DESC' 並感謝所有幫助過的人! –

+0

如果您覺得它正確或接近,請接受答案。 此外,請注意,上面發佈的示例查詢將Dec2011和Dec2012分組到同一Dec組,COUNT將會出錯。您還必須將年份作爲分組標準添加。 –

0

我不知道你正在使用哪個SQL,但如果它是MySQL,像下面的東西應該工作。

SELECT post_date, COUNT(*) 
FROM blog_posts 
GROUP BY post_date/86400 
ORDER BY post_date DESC 

86400來自24 * 60 * 60,一天中的秒數。

+0

感謝頁面會嘗試這個和耶MySql –