按天获取统计数据 - datetime列 - mysql / php

时间:2011-12-21 02:00:03

标签: php mysql statistics

我有一个我自己无法解决的问题。最好的办法是如果可以直接从mysql中完成它,但如果没有,从php计算也很好。

我有一个包含3列的表:id,time,value

现在时间值是datetime(例如:2012-11-03 00:13:12)

我想创建过去7天的统计信息。假设我有7行,今天是2012-12-20。

以下是行: 日期时间值
2012-12-20 00:12:12 2
2012-12-20 04:06:15 4
2012-12-20 03:12:14 5
2012-12-18 03:12:14 7
2012-12-16 12:12:14 3
2012-12-16 14:23:34 2
2012-12-15 14:23:34 9

如果我想获得最近7天的报告,那就是:

  

2012-12-14 - >值= 0
  2012-12-15 - >值= 9

     

2012-12-16 - >值= 5

     

2012-12-17 - > value = 0

     

2012-12-18 - >值= 7
  2012-12-19 - > value = 0

     

2012-12-20 - >值= 11

目前我有这个(提取最近7天的记录):

$date=date("Y-m-d");
$date=date ("Y-m-d", strtotime ( '-7 day' . $date ) );  
$qry="select value,date from mytable where date>'$date'";
$res=mysql_query($qry) or die("Couldn't select Information : ".mysql_error());
while($row=mysql_fetch_array($res))
    {
        echo $row["value"];
    }

我希望有人可以提供建议。  提前致谢!  维拉德

1 个答案:

答案 0 :(得分:4)

仅使用MySQL就可以相对容易地解决这个问题。这与此问题非常相似:MySQL Query GROUP BY day / month / year

您需要更改查询,以便获取给定周的所有记录。

SELECT DAY(date) , SUM(value)
FROM mytable
WHERE WEEK(date) = WEEK(NOW())
GROUP BY DAY(date)

它也很容易更改您对数字进行分组的方式,例如按月使用GROUP BY MONTH(date)。您还可以通过执行SELECT DAYNAME(date)使MySQL将日期名称显示为字段。有关可用功能的更多详细信息,请查看MySQL User Guide on Date and Time functions