2013-02-09 122 views
5

我想總結所有時差以顯示志願者的總工作時間。獲得一組時間差異是很容易的:MySQL - 一組時差的總和

Select timediff(timeOut, timeIn) 
FROM volHours 
WHERE username = 'skolcz' 

它給出了幾小時的時間列表,然後我想總結一下它的總和。

所以,如果結果集爲:

12:00:00 
10:00:00 
10:00:00 
08:00:00 

它只是總40小時。

這有

辦法做這樣的事情:

SELECT SUM(Select timediff(timeOut,timeIn) 
FROM volHours 
WHERE username = 'skolcz') as totalHours 

回答

11
Select SEC_TO_TIME(SUM(TIME_TO_SEC(timediff(timeOut, timeIn)))) AS totalhours 
FROM volHours 
WHERE username = 'skolcz' 

如果沒有,那麼也許:

Select SEC_TO_TIME(SELECT SUM(TIME_TO_SEC(timediff(timeOut, timeIn))) 
FROM volHours 
WHERE username = 'skolcz') as totalhours 
+0

你沒有用戶名,因爲他已經選擇skolcz – 2013-02-09 16:31:58

+0

看起來幾乎是正確的,但我得到'304538.000000'的答案當真實數據是12:00:00 04:00:00 00:30:00 05 :00:00 09:00:00 00:04:32 00:11:06 – 2013-02-09 16:35:06

+0

已更新 - 請再試一次?可能需要兩步工作... – Matthew 2013-02-09 16:39:22

1

嘗試類似的東西

Select SUM(timediff(timeOut, timeIn)) as total 
FROM volHours 
WHERE username = 'skolcz' 
3

你幾乎從馬修得到答案,你需要做的是增加投:

Select CAST(SUM(timediff(timeOut, timeIn)) as time) as totalhours 
FROM volHours 
WHERE username = 'skolcz'  
+1

沒想到只是試圖使用cast - 比我的第二次迭代TIME_TO_SEC - > SEC_TO_TIME更可讀。感謝您的支持。 – Matthew 2013-02-09 16:48:44