我拥有一个包含三个记录的数组:
value datetime
2 03/03/2015 14:34:00
4 03/03/2015 14:36:00
5 03/03/2015 13:34:00
我想选择14时的记录并对它们求和。在上面的例子中将是4 + 2 = 6
我该怎么做?
$sql ="SELECT amperagem, data FROM tomada WHERE date(data) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)";//
mysql_select_db('localiza');
$retval = mysql_query( $sql, $conn );
$num_rows = mysql_num_rows($retval);
while($row = mysql_fetch_array($retval, MYSQL_BOTH)){
$hour= substr(($row['data']),11, 2);
答案 0 :(得分:0)
您实际上可以通过单个SQL查询获得价值:
请务必阅读http://www.w3schools.com/sql/func_datepart.asp
所以要获取日期时间包含14:XX:XX
的所有记录SELECT value FROM tomada WHERE HOUR(data) = 14;
现在只需像你一样获取行并检索每行的“值”并将其添加
$res = mysql_query( $sql, $conn );
$returnObjects = array();
if ($res == null) {
return $returnObjects;
}
while(!is_null($row = mysql_fetch_row($res))){
$returnObjects[] = $row;
}
$returnArray = mysql_fetch_array($returnObjects);
$sum = 0;
for($row = 0, $size = count($returnArray); $row < $size; $row++){
$sum += $returnArray[$row][0]; //Note 0 is the value you need
}
return $sum;
请注意,它可以用更少的代码行完成,步骤更少,但我发现这有助于阅读我正在做的事情。如果某些对象为NULL或值无效,还需要进行一些额外的检查。
答案 1 :(得分:0)
sql就像:
一样简单从tomada中选择sum(value),其中hour(datetime)= 14;