关于按日获取统计信息:按日期获取统计信息 – 日期时间列 – mysql / php

Get statistics by day - datetime column - mysql/php

我有一个自己解决不了的问题。最好的办法是,如果可以直接从MySQL进行计算,但如果不能,从PHP进行计算也很好。

我有一个表有3列:id、time、value

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

我想创建过去7天的统计数据。假设我有7排,今天是2012-12-20。

以下是行:日期时间值2012年12月20日00:12:12 22012年12月20日04:06:15 42012年12月20日03:12:14 52012年12月18日03:12:14 72012年12月16日12:12:14 32012年12月16日14:23:34 22012年12月15日14:23:34 9

如果我想得到最近7天的报告,应该是:

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

2012-12-16 -> value =5

2012-12-17 -> value =0

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

2012-12-20 -> value =11

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

1
2
3
4
5
6
7
8
$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"];
    }

我希望有人能提供建议。事先谢谢!弗拉德


仅使用MySQL就可以相对容易地解决这个问题。这与这个问题非常相似:mysql查询组(按天/月/年)

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

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

还可以很容易地更改对数字的分组方式,例如使用GROUP BY MONTH(date)按月进行分组。您还可以通过执行EDOCX1[1]使MySQL将日名称显示为字段,以了解有关可用功能的更多详细信息,请参阅MySQL用户指南中的日期和时间功能。