Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL/MariaDB:समय-आधारित डेटा में अंतराल कैसे खोजें?

एक दृष्टिकोण पहले सबक्वेरी के लिए हो सकता है और प्रत्येक रिकॉर्ड को निकटतम अधिक टाइमस्टैम्प वाले रिकॉर्ड के साथ जोड़ सकता है। फिर, उससे पूछें, और पर्याप्त आकार के अंतराल वाले सभी रिकॉर्ड लौटाएं।

SELECT
    DateTime AS GapStart,
    NextDateTime AS GapEnd,
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
    SELECT DateTime, Value,
        (SELECT MIN(DateTime) FROM #time t2
         WHERE t2.DateTime > t1.DateTime) AS NextDateTime
    FROM #time t1
) t
WHERE
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;   -- or whatever threshhold you want

डेमो

मूल उत्तर में जोड़ें

अगर DateTime हमेशा बढ़ रहा है, आंतरिक चयन को बदलकर गति सुधार प्राप्त किया जा सकता है:

SELECT
    DateTime AS GapStart,
    NextDateTime AS GapEnd,
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) AS SizeInSecond
FROM
(
    SELECT DateTime, Value,
        (SELECT DateTime FROM #time t2
         WHERE t2.DateTime > t1.DateTime LIMIT 1) AS NextDateTime
    FROM #time t1
) t
WHERE
    TIMESTAMPDIFF(SECOND, DateTime, NextDateTime) > 5;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक mysql डेटटाइम फ़ील्ड में केवल समय अपडेट करें

  2. QMYSQL ड्राइवर लोडिंग त्रुटि

  3. प्रारंभ तिथि और समाप्ति तिथि के बीच मूल्यों का चयन करें

  4. डेटा स्रोत ने कनेक्शन की स्थापना को अस्वीकार कर दिया, सर्वर से संदेश:बहुत अधिक कनेक्शन

  5. MySQL db (utf-8) में क्रोएशियाई विशेषक चिह्न