2011-05-28 83 views
1

我试图返回每个月内的记录数并按月/年分组结果。使用unix时间戳在一个月内SQL计数记录

模式看起来是这样的:

id title timestamp 

我一直在寻找周围,但我期待它,我不能得到的结果。谢谢。

+0

你想数'2010年1月a nd'Jan/2011'分开,对吧? – 2011-05-28 10:25:04

回答

8

格式化时间戳,然后按它进行分组。

组的月份:

SELECT DATE_FORMAT(t.timestamp, "%Y-%m") AS "_Month", COUNT(*) 
FROM yourtable as t 
GROUP BY _Month; 

组的年份:

SELECT DATE_FORMAT(t.timestamp, "%Y") AS "_Year", COUNT(*) 
FROM yourtable as t 
GROUP BY _Year; 

如果时间戳字段存储为unixtime价值,只是包装FROM_UNIXTIME()绕场:

SELECT DATE_FORMAT(FROM_UNIXTIME(t.timestamp), "%Y") AS "_Year", COUNT(*) 
FROM yourtable as t 
GROUP BY _Year; 
+0

Crikey这个地方不错。谢谢! – 2011-05-28 11:04:01

4
SELECT YEAR(`timestamp`) AS Y, MONTH(`timestamp`) AS M, COUNT(1) AS C 
FROM that_table 
GROUP BY YEAR(`timestamp`), MONTH(`timestamp`) 
ORDER BY YEAR(`timestamp`), MONTH(`timestamp`)