我有一项任务是根据数据库结果制作网站文章统计信息。我需要计算每月添加的文章数量,并将这些结果传递给JavaScript统计函数。
我正在做的第一件事是找到添加文章的整个时期:
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
之前在while循环中创建类似$endDate
的内容。提前谢谢。
更新。数据库中共有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 :(得分:2)
您似乎可以使用GROUP BY
来实现此功能,例如
SELECT date_format(`date`, '%Y-%m'), COUNT(id) as total
FROM articles
GROUP BY date_format(`date`, '%Y-%m');
而且您不需要日期边界......