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

Mysql एक ही क्षेत्र में टाइमस्टैम्प के बीच समय अंतर की गणना करें?

आप तालिका में स्वयं शामिल हो सकते हैं, आपके मामले में कुछ ऐसा काम करता है:

SELECT 
*
FROM
yourTable a
INNER JOIN yourTable b ON a.ID = b.ID + 1
WHERE TIMESTAMPDIFF(second, a.timestamp, b.timestamp) > 60

लेकिन यह तब बदसूरत हो सकता है जब आपके आईडी कॉलम में गैप हो। और विशेष रूप से यह बदसूरत हो सकता है (प्रदर्शन के मामले में (जब आपके पास टेबल पर अच्छी अनुक्रमणिका नहीं होती है)) जब आपके पास *बहुत सारे होते हैं डेटा का।

इसलिए, मैं चर का उपयोग करके कुछ और उन्नत प्रश्नों का उपयोग करने का सुझाव दूंगा। तालिका में शामिल होने की आवश्यकता के बिना यह आमतौर पर बहुत तेज चलता है:

SELECT * FROM (
SELECT
yt.*,
TIMESTAMPDIFF(second, @prevTS, `timestamp`) AS timedifference,
@prevTS:=yt.`timestamp`
FROM
yourTable yt
, (SELECT @prevTS:=(SELECT MIN(`timestamp`) FROM yourTable)) vars
ORDER BY ID
)subquery_alias
WHERE timedifference > 65
  • इसे sqlfiddle में लाइव काम करते हुए देखें

दो पंक्तियों को प्रदर्शित करने के लिए इस क्वेरी को और बेहतर बनाने के लिए जहां समय अंतर बहुत बड़ा है, कोई समस्या नहीं होनी चाहिए :) जब आप गंभीर संकट में हों, तो बेझिझक पूछें।




  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 किल प्रक्रिया उपयोगकर्ता के पास पर्याप्त अंक नहीं है PHP

  2. docker-entrypoint-initdb में MySQL स्क्रिप्ट निष्पादित नहीं की जाती हैं

  3. mySQL:तीन तालिकाओं में शामिल होना - कैसे?

  4. आईओएस अक्षांश और देशांतर के लिए PHP क्वेरी एक एक्सएमएल आउटपुट के साथ पास के MySQL lat और lon की खोज नहीं कर रही है

  5. MySQL डेटाबेस से Google मानचित्र API v3 पर एकाधिक बहुभुज आरेखित करना