0

我的 php 查询获取数据时遇到问题。让我解释一下我想要什么。我有一个数据库,可以在一天中将活动用户保存几个小时。例如 01-01-2012 13:00 active = 5 01-01-2012 14:00 active = 10。我的 php 查询应该创建一个数组,其中包含 2 个日期和活动列。但是日期必须像 01-01-2012 没有我们的时间。所以我将它们分组为 date2 但我找不到每一天的活动(总和)。这是我的查询,它没有给出正确的有效总和。

$query2 = mysql_query("SELECT DATE_FORMAT(date, '%Y-%m-%d') AS date2, SUM(active) FROM hit WHERE game= '".$game."' AND source = '".$source."' AND date > '".$dateFrom."' AND date < '".$dateTo."' GROUP BY date2 ORDER BY date2");

while($tuple=  mysql_fetch_array($query2)){
    $myArr[] = $tuple;
}
print_r($myArr);
4

1 回答 1

0

您需要别名SUM(active)GROUP BY date. 如果date是一个datetime,你可以GROUP BY DATE(date)。此外,请注意保留字,并确保在必要时使用刻度线。

此外,如果您正在寻找一个包容性的日期范围,您应该知道当您发送时2012-10-03,它实际上是和之间的2012-10-03 00:00:00任何记录将被忽略。00:00:0023:59:59

最后,您应该停止使用已弃用mysql_的函数。

查询应该有效:

$query2 = mysql_query("
    SELECT DATE_FORMAT(`date`, '%Y-%m-%d') AS date2, SUM(active) AS active 
    FROM hit 
    WHERE game= '".$game."' AND source = '".$source."' 
        AND `date` > DATE_SUB('".$dateFrom."', INTERVAL 1 SECOND) 
        AND `date` < DATE_ADD('".$dateTo."', INTERVAL 1 DAY) 
    GROUP BY DATE(`date`)
    ORDER BY `date`");
$i = 0;
while($tuple=  mysql_fetch_array($query2)){
    $myArr[$i][date2] = $tuple[date2];
    $myArr[$i][active] = $tuple[active];
    $i++;
}
print_r($myArr);

您的数组 ( $myArr) 将如下所示:

大批
(
    [0] => 数组
        (
            [日期2] => 2012-10-03
            [活跃] => 5
        )

)
于 2012-10-04T14:17:02.667 回答