如何在一年内每天只使用一个查询来获取数据?

Jam*_*mes 5 php mysql

我想在一年内每天获取数据,但我必须每天使用365个查询,例如:

for ($i = 0; $i<365; $i++){
    $end_day = ...; // the end time of each day
    $start_day = ...; // the start time of each day
    $query = select count(*)....where created < $end_day AND created > $start_day
}
Run Code Online (Sandbox Code Playgroud)

我认为我目前的解决方案使系统变得非常慢.有没有办法只使用一个查询?

ZoF*_*reX 4

假设您创建的列是DATETIME或TIMESTAMP,并且存储的数据比一天更细粒度:

SELECT COUNT(*) ... 按年(已创建)、月(已创建)、日(已创建)分组

COUNT 是一个聚合函数,适用于每个组,即每个组有一行,该行将包含该组中的记录数。由于我们一天做了一个组,这就是您想要的数据。

您不能仅按 DAY(created) 进行分组,因为 DAY 返回月份中的日期,因此我们还需要输入月份和年份以确保日期是离散的。

您可能希望使用 WHERE 创建 > $start AND 创建 < $finish 来将其限制在某个时间范围内(或 WHERE YEAR(created) == 2010)。

参考:

MySQL 查询 GROUP BY 日/月/年

http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html