PostgreSQL में, make_interval()
फ़ंक्शन वर्षों, महीनों, सप्ताहों, दिनों, घंटों, मिनटों और सेकंड फ़ील्ड से एक अंतराल बनाता है।
आप वर्ष, महीने, सप्ताह, दिन, घंटे, मिनट और/या सेकंड फ़ील्ड प्रदान करते हैं, और यह अंतराल में एक अंतराल लौटाएगा डेटा प्रकार।
सिंटैक्स
फ़ंक्शन में निम्न सिंटैक्स है:
make_interval(years int DEFAULT 0, months int DEFAULT 0, weeks int DEFAULT 0, days int DEFAULT 0, hours int DEFAULT 0, mins int DEFAULT 0, secs double precision DEFAULT 0.0)
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है।
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
परिणाम:
1 year 2 mons 25 days 05:06:07
इस उदाहरण में, मैंने सभी सात तर्क दिए हैं।
PostgreSQL में फ़ंक्शन के लिए तर्क पारित करने के लिए यह पारंपरिक तंत्र है, और इसे "स्थितित्मक संकेतन" के रूप में जाना जाता है।
स्थितीय संकेतन का उपयोग करते समय, सभी तर्क क्रम में निर्दिष्ट किए जाते हैं।
नामांकित संकेतन
नामित नोटेशन का उपयोग करके यहां एक उदाहरण दिया गया है।
SELECT make_interval(days => 12);
परिणाम:
12 days
इस उदाहरण में, मैं केवल एक तर्क निर्दिष्ट करने के लिए नामांकित संकेतन का उपयोग करता हूं। यह मुझे केवल दिनों की संख्या निर्दिष्ट करने के लिए सभी तर्कों को दर्ज करने से बचाता है।
सभी तर्क डिफ़ॉल्ट रूप से शून्य हो जाते हैं, इसलिए उन्हें छोड़ देने से कोई प्रतिकूल प्रभाव नहीं पड़ता है।
अगर मैं केवल एक तर्क निर्दिष्ट करते समय नामित नोटेशन का उपयोग नहीं करता तो यहां क्या होता है।
SELECT make_interval(12);
परिणाम:
12 years
यह मान लिया कि मेरा मतलब 12 साल है।
नामांकित संकेतन के बारे में अच्छी बात यह है कि आप जितने चाहें उतने तर्क दे सकते हैं, और नहीं।
उदाहरण के लिए:
SELECT make_interval(months => 10, days => 5, mins => 47);
परिणाम:
10 mons 5 days 00:47:00
लीगेसी नेम्ड नोटेशन
पोस्टग्रेज के पुराने संस्करणों ने नामित नोटेशन के लिए थोड़ा अलग सिंटैक्स का इस्तेमाल किया। यह सिंटैक्स :=
. का उपयोग करता है के बजाय =>
।
उदाहरण:
SELECT make_interval(days := 12);
परिणाम:
12 days
Postgres 12 के अनुसार, यह सिंटैक्स अभी भी पश्चगामी संगतता के लिए काम करता है।
सप्ताह और दिन
पोस्टग्रेज अंतराल के साथ, सप्ताहों को दिनों के रूप में दर्शाया जाता है। इसलिए यदि आप weeks
. निर्दिष्ट करते हैं तर्क, परिणाम दिनों में होगा।
SELECT make_interval(weeks => 2);
परिणाम:
14 days
इसलिए यदि आप days
. भी निर्दिष्ट करते हैं तर्क, इसे weeks
. द्वारा उत्पादित दिनों में जोड़ा जाएगा तर्क।
SELECT make_interval(weeks => 2, days => 3);
परिणाम:
17 days
अंतराल आउटपुट शैली
पोस्टग्रेज में, अंतराल प्रकार का आउटपुट स्वरूप निम्नलिखित चार अंतराल शैलियों में से एक पर सेट किया जा सकता है:
sql_standard
postgres
postgres_verbose
iso_8601
आप इसे SET intervalstyle
. का उपयोग करके सेट कर सकते हैं . डिफ़ॉल्ट postgres
है प्रारूप।
पिछले उदाहरण सभी डिफ़ॉल्ट प्रारूप का उपयोग करते हैं (postgres
)।
यहां एक उदाहरण दिया गया है जो make_interval()
. के आउटपुट को प्रदर्शित करता है विभिन्न आउटपुट शैलियों का उपयोग करते समय।
sql_standard
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
परिणाम:
+1-2 +25 +5:06:07
पोस्टग्रेज
यह डिफ़ॉल्ट सेटिंग है।
SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
परिणाम:
1 साल 2 महीने 25 दिन 05:06:07
postgres_verbose
SET intervalstyle = 'postgres_verbose';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
परिणाम:
@ 1 year 2 mons 25 days 5 hours 6 mins 7 secs
iso_8601
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
परिणाम:
P1Y2M25DT5H6M7S