MySQL时间列上的平均值?

48

SELECT avg(duration) as average FROM login;

duration 的数据类型是"time",因此我的值看起来像: 00:00:14, 00:20:23等

我执行该查询,它给我2725.78947368421的结果。

那是什么?我想要用时间格式显示,MySQL能对时间进行平均吗?

1个回答

102

试一下这个:

SELECT SEC_TO_TIME(AVG(TIME_TO_SEC(`login`))) FROM Table1;

测试数据:

CREATE TABLE `login` (duration TIME NOT NULL);
INSERT INTO `login` (duration) VALUES
('00:00:20'),
('00:01:10'),
('00:20:15'),
('00:06:50');

结果:

00:07:09

此外,您可以将 time_to_sec 的结果除以 60,以获得一个数字结果。 - John M
4
有时候简单的事情能给一个人带来快乐。感谢Mark Byers,这个东西绝对运行良好。 :) - MontyPython
4
为什么我的矿机结果是00:02:54.6363,6363代表什么?如何排除它的影响? - Hafidh
1
我有值为01:00:00和22:00:00。通过这个查询,平均值是11:30:00。这是错误的。所以应该是23:30。 - Apoorva Shah
1
@ApoorvaShah,你需要先将86400秒加到01:00:00。 - Paul Chris Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接