2010-08-22 15 views
5

मैंने सोचा कि यह वास्तव में एक साधारण बात होगी, लेकिन मुझे कोई जवाब खोजने में मुश्किल हो रही है!टाइमस्टैम्प घटाकर

मेरे पास added_on और closed_on फ़ील्ड के साथ एक समर्थन तालिका है जो समर्थन टिकट खोले जाने और बंद होने पर ट्रैक करते हैं।

मैं एक प्रश्न खोलना चाहता हूं कि (closed_on - added_on) एक टिकट खोलने की अवधि दिखाने के लिए। दोनों फ़ील्ड timestamp प्रारूप हैं। यह उतना आसान नहीं है जितना मैंने सोचा था कि यह होगा ...

आदर्श रूप से, अंतिम आउटपुट X days Y hours Z minutes होगा, लेकिन मुझे कुल सेकंड या कुछ पाने के लिए खुशी होगी, मैं निश्चित रूप से इसे वहां से ले जा सकता हूं।

नमूना डेटा:

[id] [added_on]    [closed_on] 
1 2010-01-01 00:10:20 2010-01-02 00:10:20 
1 2010-01-03 00:00:01 2010-01-03 13:30:01 

उत्तर

3

उपयोग करें:

SELECT CONCAT(DATEDIFF(closed_on, added_on), 
       ' days ', 
       SUBSTRING_INDEX(TIMEDIFF(closed_on, added_on), ':', 1), 
       ' hours ', 
       SUBSTR(TIMEDIFF(closed_on, added_on), INSTR(TIMEDIFF(closed_on, added_on), ':')+1, 2), 
       ' minutes') 
अपने उदाहरण डेटा के साथ

, कि मुझे देता है:

0 days 00 hours 00 minutes 
0 days 13 hours 30 minutes 
0

आप TIMESTAMPDIFF उपयोग कर सकते हैं सेकंड में अंतर पाने के लिए:

SELECT TIMESTAMPDIFF(SECOND,closed_on,added_on)...

संपादित करें: एक और तरीका है उपयोग करने के लिए किया जाएगा UNIX_TIMESTAMP:

SELECT UNIX_TIMESTAMP(closed_on)-UNIX_TIMESTAMP(added_on)... 
संबंधित मुद्दे