我按照时间格式从查询中返回3次: ○点31分36秒 ○点32分58秒 零时11分59秒
我希望以相同的格式获得这些时间的平均值。
目前我正在尝试使用
date('H:i:s', array_sum(array_map('strtotime', $results->[6])) / count($results->[6]))
但我得到的输出是19:00:00如果我将输出增加到&m; / d / y H:i:s'我的时间是12/31/69 19:00:00。如果我删除' strtotime',我仍会得到相同的输出。
感谢您的帮助
答案 0 :(得分:0)
而不是依靠PHP来执行AVG聚合,而是使用更高效的DB:
SELECT sec_to_time(avg(time_to_sec(<time>))) from <table>
答案 1 :(得分:0)
适用于我的解决方案
<?php $totalTime = 0;
$sql = 'SELECT * FROM ' . TABLE_HTA . ' WHERE date_time >= curdate() AND employee_id = "4104" ORDER BY order_id ASC';
$orders = $db->Execute($sql);
if($orders->RecordCount() > 0) {
while(!$orders->EOF) {
$totalRuns = $totalRuns + 1;
$str_time = $orders->fields['otd_time'];
$str_time = preg_replace("/^([\d]{1,2})\:([\d]{2})$/", "00:$1:$2", $str_time);
sscanf($str_time, "%d:%d:%d", $hours, $minutes, $seconds);
$time_seconds = $hours * 3600 + $minutes * 60 + $seconds;
$orders->MoveNext();
}
}
$otdAverage = $totalTime / $totalRuns;
echo gmdate("H:i:s", $otdAverage);?>
输入是:
○点31分36秒
○点32分58秒
〇点11分59秒
○时22分52秒
0时32分08秒
〇时22分19秒
○时51分46秒
输出是00:29:22
phpMyAdmin sql查询输出为00:29:22
由于在某处进行舍入,因此相差1秒。谢谢你的帮助。希望这有助于其他人!