2017-02-12 70 views
1

問:總和日期時間在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年1月28日之間的時間。我需要它總是在每一行,然後所有行一起總結。是否有可能在MySQl中總結這一點,還是我綁定到PHP?

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

似乎是正確的..有什麼問題呢? – scaisEdge

+0

問題是我想(如果可能)總結MySQL中的所有時間。先按行再按全部行。我可以通過使用MySQL和PHP來做到這一點。但是我想知道是否有可能使用MySQL更高效地實現這一點。 – Per76

+0

「mytable」表的模式是什麼?如果你需要所有行的總小時數,爲什麼你需要'where id = 1219'條款?如果'id = 1219'只對應一行,那麼只有1行/列值的'min'和'max'的含義是什麼? – Paras

回答

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