我的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);
答案 0 :(得分:0)
您需要别名SUM(active)
和GROUP BY date
。如果date
是datetime
,您可以GROUP BY DATE(date)
。另外,请注意reserved words,并确保在必要时使用刻度线。
此外,如果您正在寻找包含日期范围,您应该知道在发送2012-10-03
时,它实际上是2012-10-03 00:00:00
以及00:00:00
和{{1}之间的任何记录将被忽略。
最后,您应该停止使用23:59:59
mysql_
函数。
此deprecated应该有效:
$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
)看起来像是:
Array ( [0] => Array ( [date2] => 2012-10-03 [active] => 5 ) )