【发布时间】:2023-03-10 14:58:01
【问题描述】:
我有以下 SQL 和 PHP,它们似乎没有给我正确的数字。 (非常高的数字)
我有很多行带有开始时间和结束时间戳。 我希望得到这两次之间的平均时间。
即:2小时3分46秒。
这就是我所拥有的。
SELECT AVG(tmp.dd) AS timetook
FROM
( SELECT TIME_TO_SEC(TIMEDIFF(timeclosed, timeanswered)) AS dd
FROM logs
WHERE timeclosed > DATE_SUB(NOW(), INTERVAL 1 DAY)
) tmp;
我这样做是完全错误的吗?这里有什么明显的问题吗?
while($row = $result->fetch_assoc()) {
$timetoclose = $row['timetook'];
$hours = floor($timetoclose / 3600);
$mins = floor($timetoclose / 60 % 60);
$secs = floor($timetoclose % 60);
$timetoclose = sprintf('%02d Hour(s), %02d Minute(s), %02d Second(s)', $hours, $mins, $secs);
}
干杯 G
【问题讨论】:
-
我在您的查询中没有发现任何明显错误。 “2小时”的平均值这么高吗?超过 24 小时,对我来说它看起来并不正确。请记住,对于 AVG,如果您有几行数字很高,它会增加一切。也许你应该改用 MEDIAN,在 MySQL 中不可用,但可以模仿它