2013-02-09 2 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

업데이트 - 다시 시도 하시겠습니까? 작업하는 데 두 단계가 필요할 수도 있습니다 ... – 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의 두 번째 반복보다 캐스트를 사용하려고 생각하지 않았습니다. 고마워. – Matthew