पुन:प्रश्न #1 :क्लोज्ड-ओपन शैक्षणिक साहित्य में 20-25 वर्षों के इतिहास के साथ दिनांक सीमाओं को संभालने का मानक तरीका है। बिटेम्पोरल डेटा . का पीपी. 24-25 देखें टॉम जॉनस्टन द्वारा, और एसक्यूएल में समय-उन्मुख डेटाबेस अनुप्रयोगों का विकास रिचर्ड स्नोडग्रास द्वारा।
लेकिन मुझे लगता है कि इसका एक कारण यह है कि लगातार श्रेणियों में ओवरलैप नहीं होता है। अगर a
है [May2016, Jun2016)
और b
है [Jun2016, Jul2016)
, वे कोई दिन साझा नहीं करते हैं। इसलिए वे "एक साथ स्नैप" करते हैं, और आपको किनारे के मामलों के बारे में चिंता करने की ज़रूरत नहीं है जहां वे स्पर्श करते हैं।
ध्यान दें कि बंद-खुले का एक दोष (शायद) यह है कि आप एक खाली सीमा निर्दिष्ट नहीं कर सकते। [May2016, May2016)
केवल एक आत्म-विरोधाभास है, जबकि [May2016, May2016]
एक पल है।
पुन:प्रश्न #2 :फिर से यह अलग हो सकता था, लेकिन मैं upper([May2016, Jun2016))
बनाने के कई फायदों के बारे में सोच सकता हूं वापसी Jun2016
:
- श्रेणी के रिज़ॉल्यूशन की परवाह किए बिना यह वही चीज़ लौटाता है।
- यह एक खुले समापन बिंदु के गणितीय अर्थ की तरह है, जहां यह केवल केवल . है संभव उत्तर।
- यह वही लौटाता है जो "लेबल" से मेल खाता है, इसलिए यकीनन यह कम आश्चर्यजनक है।
- यह आपको आसानी से देखने देता है कि क्या दो श्रेणियां "मिलती हैं":
upper(a) = lower(b)
।
साथ ही, ध्यान दें कि Postgres में सभी समय से संबंधित डेटाटाइप असतत हैं। पोस्टग्रेज़ को फ्लोट-आधारित टाइमस्टैम्प के साथ संकलित करने का एक विकल्प हुआ करता था, लेकिन इसे बहिष्कृत कर दिया गया है और मैंने कभी इसका सामना नहीं किया है।