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

PostgreSQL में ओवरलैपिंग तिथियों के लिए परीक्षण कैसे करें

PostgreSQL में, आप OVERLAPS . का उपयोग कर सकते हैं अतिव्यापी समय अवधि के लिए परीक्षण करने के लिए ऑपरेटर।

जब दो समयावधियां (उनके समापन बिंदुओं द्वारा परिभाषित) ओवरलैप होती हैं, और जब वे ओवरलैप नहीं होती हैं, तो फ़ंक्शन सही हो जाता है।

सिंटैक्स

इसका उपयोग निम्नलिखित दो तरीकों से किया जा सकता है:

(start1, end1) OVERLAPS (start2, end2)
(start1, length1) OVERLAPS (start2, length2)

दूसरे शब्दों में, आप एक प्रारंभ तिथि/समय प्रदान करते हैं, फिर आपके पास समाप्ति तिथि/समय या समय की लंबाई प्रदान करने का विकल्प होता है।

अधिक विशेष रूप से, समापन बिंदुओं को दिनांक, समय, या समय टिकटों के जोड़े के रूप में निर्दिष्ट किया जा सकता है; या एक अंतराल के बाद दिनांक, समय, या समय टिकट के रूप में।

जब मूल्यों की एक जोड़ी प्रदान की जाती है, तो शुरुआत या अंत पहले लिखा जा सकता है; OVERLAPS स्वचालित रूप से जोड़ी के पहले के मान को प्रारंभ के रूप में लेता है।

उदाहरण

प्रदर्शित करने के लिए यहां एक बुनियादी उदाहरण दिया गया है।

SELECT (date '2022-01-09', date '2022-02-10') OVERLAPS
       (date '2022-02-09', date '2022-03-10');

परिणाम:

True

परिणाम सत्य है क्योंकि दोनों समयावधि ओवरलैप होती हैं।

यहाँ यह फिर से है, लेकिन इस बार मैं समयावधि बदल रहा हूँ ताकि वे ओवरलैप न हों।

SELECT (date '2022-01-09', date '2022-02-08') OVERLAPS
       (date '2022-02-09', date '2022-03-08');

परिणाम:

False

सामान्य समापन बिंदु

यह ध्यान रखना महत्वपूर्ण है कि प्रत्येक समयावधि को आधे-खुले अंतराल का प्रतिनिधित्व करने के लिए माना जाता है start <= time < end , जब तक start और end बराबर हैं जिस स्थिति में यह उस एकल समय को तत्काल दर्शाता है। इसका मतलब यह है कि दो समयावधियां केवल एक समापन बिंदु के साथ समान रूप से ओवरलैप नहीं होती हैं।

अगले उदाहरण में, दूसरी समय अवधि उसी दिन शुरू होती है जिस दिन पहली समय अवधि समाप्त होती है।

SELECT (date '2022-01-09', date '2022-02-10') OVERLAPS
       (date '2022-02-10', date '2022-03-10');

परिणाम:

False

हालांकि, अगर पहली समयावधि के दोनों अंतिम बिंदु समान हैं, तो हमें एक अलग परिणाम मिलता है:

SELECT (date '2022-01-09', date '2022-01-09') OVERLAPS
       (date '2022-01-09', date '2022-02-10');

परिणाम:

True

अंतराल

जैसा कि बताया गया है, दूसरा अंत बिंदु एक अंतराल हो सकता है।

SELECT (date '2022-01-09', interval '32 days') OVERLAPS
       (date '2022-02-09', date '2022-03-10');

परिणाम:

True

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL, OID को पोस्टग्रेज करता है, वे क्या हैं और वे क्यों उपयोगी हैं?

  2. आप एक साधारण PostgreSQL स्क्रिप्ट में चर का उपयोग कैसे करते हैं?

  3. PostgreSQL को कभी-कभी खराब क्वेरी प्लान चुनने से रोकें

  4. SQL में समवर्ती घटनाओं की संख्या की गणना करें

  5. PostgreSQL में भविष्य की तालिकाओं पर विशेषाधिकार प्रदान करें?