查找一段时间内每个月的第一天和最后一天

时间:2010-12-20 10:06:22

标签: php date unix-timestamp

我有一项任务是根据数据库结果制作网站文章统计信息。我需要计算每月添加的文章数量,并将这些结果传递给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

1 个答案:

答案 0 :(得分:2)

您似乎可以使用GROUP BY来实现此功能,例如

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

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