2013-02-09 14 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を選んだのでユーザ名でグループ化する必要はありません –

+0

ほとんどのように見えますが、実際のデータが12:00:00のときの回答は304538.000000です。 04:00:00 00:30:00 05 :00:00 09:00:00 00:04:32 00:11:06 –

+0

更新済み - もう一度お試しください。仕事には2つのステップが必要かもしれません... – Matthew

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

TIME_TO_SEC - > SEC_TO_TIMEの2回目の繰り返しよりも読み込みが少しだけキャストを使用しようと思っていませんでした。それもありがとう。 – Matthew