2015-06-03 5 views
6

मेरे पास mysql कॉलम समय (3) है और यह समय के अच्छे मूल्य को संग्रहीत कर रहा है .. लेकिन फिर मैं दो बार योग करना चाहता हूं यह खराब समय प्रारूप में परिवर्तित हो जाता है;माईएसक्यूएल एसयूएम समय (3) मिलीसेकंड के साथ

मेरे पास दो रिकॉर्ड:

id | time 
---|----------- 
1 | 00:00:15.490 
2 | 00:02:14.900 

तो असली में मैं shoud: 00:02:30.390

लेकिन मैं मिल 230.390

MySQL से सही उत्तर प्राप्त करने के लिए वैसे भी है? पीएस मैं फ़ंक्शंस के लिए php का उपयोग कर रहा हूं लेकिन इसका उपयोग नहीं करना चाहता, जब तक कि कोई अन्य तरीका न हो। अब मैं क्वेरी SELECT SUM(time) AS total_time FROM times WHERE 1

+0

php inbuilt function date_format() का उपयोग करें। – Sagar

+0

संभावित डुप्लिकेट। इस आलेख को पढ़ें, कृपया: http://stackoverflow.com/questions/3054943/calculate-sum-time-with-mysql –

+0

संभावित डुप्लिकेट [एसक्यूएल का उपयोग कर प्रकार की गणना की गणना करें] (http://stackoverflow.com/ प्रश्न/3054123/गणना-एक-योग-प्रकार-समय-उपयोग-एसक्यूएल) –

उत्तर

4

परंतु अपनी मेज परिभाषा कुछ इस तरह है:

create table test (
    id integer, 
    `time` time(3) -- important to specify precision 
); 
आप ऐसा कर सकते हैं:

select time(sum(`time`)) 
    from test; 

ध्यान दें: आवश्यकता है mysql 5.6+ संपादित

असल में, time उपयोग करने के लिए गलत फ़ंक्शन है, क्योंकि इसमें कई स्मारक नहीं हैं।

उपयोग sec_to_time बजाय, अर्थात्:

select sec_to_time(sum(`time`)) 
    from test; 

time एक समय मूल्य के अर्क, sec_to_time एक समय मूल्य की गणना करता है - यानी, time(70) रिटर्न शून्य कोई वैध समय 70 सेकंड है कि क्योंकि, जहां के रूप में sec_to_time सही ढंग से होगा एक ही इनपुट संपादन के लिए '00:01:10' लौट

बाहर कर देता है मैं अभी भी गलत हूँ। आइए मिलीसेकंड को अलग-अलग समय से अलग करने का प्रयास करें:

select sec_to_time(sum(time_to_sec(`time`)) + sum(microsecond(`time`))/1000000) 
    from test; 
+0

हां !!! मैं यही चाहता था!! आपका बहुत बहुत धन्यवाद!! एसयूएम से पहले बस जरूरी समय !!!! :))) मैं अब बहुत खुश हूं ..; डी – Scorpioniz

+0

शायद आप मुझे बता सकते हैं कि यह समाधान क्यों प्राप्त होता है यदि समय मान जो मैं योग करने की कोशिश कर रहा हूं वह कुल_टाइम '00: 00: 19.020', 00:00 : 21.9 0 9, '00: 00: 30.360' – Scorpioniz

+0

' time' के बजाय 'sec_to_time' का उपयोग करने का प्रयास करें। –

2

उपयोग कर रहा हूँ समय समारोह के साथ अपने outputted परिणाम लपेटें के लिए मिलीसेकंड

साथ बार योग करने के लिए की आवश्यकता है। तो:

time(sum(`time`)) 

जहां समय समय कार्य है और 'समय' आपका संक्षिप्त स्तंभ है।

+0

क्या यह वास्तव में ओपी के लिए समाधान है। –

+0

हां, वह अपनी पोस्ट संपादित करने से पहले था। – kojow7

+0

अगर उन्होंने पोस्ट संपादित किया। आपको पुनर्विचार करने और अन्य समाधान प्रदान करने की आवश्यकता है। अन्यथा आपको अधिक-चिह्न मिल जाएगा। –

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