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

आपको उपयोगकर्ता नाम से पहले समूह नहीं करना है क्योंकि वह पहले से ही स्कोल्ज़ –

+0

चुनता है, लगभग सही लगता है लेकिन वास्तविक डेटा 12:00:00 04:00:00 00:30:00 05 पर उत्तर के लिए मुझे '304538.000000' मिलता है : 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

संबंधित मुद्दे