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)在 while 循环中做一些事情,直到$startDateequals $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

4

1 回答 1

2

看来您可以使用 a 来实现这一点GROUP BY,例如

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

而且您不需要日期边界...

于 2010-12-20T10:12:08.177 回答