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

SQLite में दो टाइमस्टैम्प के बीच अंतर की गणना कैसे करें

समस्या:

आपके पास timestamp . प्रकार के दो कॉलम हैं और आप उनके बीच के अंतर की गणना करना चाहते हैं।

उदाहरण:

travel तालिका, तीन कॉलम हैं:id , departure , और arrival . आप arrival . के बीच अंतर की गणना करना चाहेंगे और departure

travel तालिका इस तरह दिखती है:

आईडी प्रस्थान आगमन
1 2018-03-25 12:00:00 2018-04-05 07:30:00
2 2019-09-12 15:50:00 2019-10-23 10:30:30
3 2018-07-14 16:15:00 2018-07-14 20:40:30
4 2018-01-05 08:35:00 2019-01-08 14:00:00

समाधान 1 (दिनों में अंतर):

SELECT
  id,
  departure,
  arrival,
  JULIANDAY(arrival) - JULIANDAY(departure) AS difference
FROM travel;

नतीजा यह है:

आईडी प्रस्थान आगमन अंतर
1 2018-03-25 12:00:00 2018-04-05 07:30:00 10.8125
2 2019-09-12 15:50:00 2019-10-23 10:30:30 40.778125000186265
3 2018-07-14 16:15:00 2018-07-14 20:40:30 0.18437499972060323
4 2018-01-05 08:35:00 2019-01-08 14:00:00 368.2256944444962

चर्चा:

SQLite में टाइमस्टैम्प के बीच अंतर की गणना करने के लिए, JULIANDAY() का उपयोग करें दोनों टाइमस्टैम्प के लिए कार्य करें, फिर एक को दूसरे से घटाएं। इस तरह आपको दिनों में फर्क नजर आने लगता है। अंतर का पूर्णांक भाग पूरे दिनों की संख्या है, और दशमलव भाग आंशिक दिन का प्रतिनिधित्व करता है।

JULIANDAY() फ़ंक्शन 24 नवंबर, 4714 ई.पू. को दोपहर ग्रीनविच मीन टाइम के बाद से दिनों की संख्या लौटाता है। आप इस फ़ंक्शन के बारे में दस्तावेज़ीकरण में अधिक पढ़ सकते हैं।

समाधान 2 (सेकंड में अंतर):

SELECT
  id,
  departure,
  arrival,
  ROUND((JULIANDAY(arrival) - JULIANDAY(departure)) * 86400) AS difference
FROM travel;

नतीजा यह है:

आईडी प्रस्थान आगमन अंतर
1 2018-03-25 12:00:00 2018-04-05 07:30:00 934200
2 2019-09-12 15:50:00 2019-10-23 10:30:30 3523230
3 2018-07-14 16:15:00 2018-07-14 20:40:30 15930
4 2018-01-05 08:35:00 2019-01-08 14:00:00 31814700

चर्चा:

यदि आप सेकंड में टाइमस्टैम्प के बीच अंतर की गणना करना चाहते हैं, तो दिनों में दशमलव अंतर को एक दिन में सेकंड की संख्या से गुणा करें, जो 24 * 60 * 60 = 86400 के बराबर है। , या एक दिन में घंटों की संख्या, एक घंटे में मिनटों की संख्या और एक मिनट में सेकंड की संख्या का गुणनफल। चूंकि पूर्णांकन त्रुटियों के कारण दिनों में अंतर के लिए दशमलव भाग 100% सटीक नहीं होते हैं, इसलिए आपको एक गैर-शून्य दशमलव भाग मिल सकता है। ROUND() . का उपयोग करके परिणाम को निकटतम पूर्णांक में पूर्णांकित करना फ़ंक्शन, समस्या को ठीक करता है।

इसी तरह, आप मिनटों या घंटों में अंतर की गणना कर सकते हैं। बस * 86400 to * 3600 में बदलें (मिनट) या * 60 (घंटे)।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite में एक डेटाबेस संलग्न करें

  2. Android SQLite सम्मिलित करें या अपडेट करें

  3. java.lang.IllegalArgumentException:कॉलम '_id' मौजूद नहीं है

  4. SQLite में विदेशी कुंजी की सूची लौटाएं

  5. कर्सर डेटा को एक सरणी में रखना