MySQL行中的日期时间总和

时间:2017-02-12 10:10:35

标签: php mysql

问题:

是否可以对MySQL中的所有行进行分组并总结小时数?

Starttime - type:datetime, Stoptime - type:datetime

数据

Starttime, stoptime
2016-10-25 09:00:00, 2016-10-29 17:00:00
2016-11-26 09:00:00, 2016-11-26 17:00:00
2016-11-30 09:00:00, 2016-11-30 17:00:00
2017-01-28 09:00:00, 2017-01-28 17:45:00

以下代码总结了2016-10-25和2017-01-28之间的所有小时数。我需要它在每一行和所有行上总结所有时间。是否可以在MySQl中对此进行求和,或者我绑定到PHP?

SELECT 
MIN(starttime), 
MAX(stoptime), 
SUM(TIME_TO_SEC(TIMEDIFF(stoptime, starttime))/3600) AS total_hours 
FROM mytable WHERE id = 1219

1 个答案:

答案 0 :(得分:1)

总结所有差异,您不需要min(starttime)max(stoptime),只需使用timestampdiffsum,例如

select sum(timestampdiff(hour, starttime, stoptime))
from mytable

如果您需要小时数,请在问题中保留time_to_sec(...) / 3600

select sum(time_to_sec(timediff(stoptime, starttime)) / 3600)
from mytable

另见sqlfiddle