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