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

कैसे make_interval () PostgreSQL में काम करता है

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. डीबी अनुप्रयोगों के लिए ऑडिट ट्रेल/परिवर्तन इतिहास छोड़ने के लिए प्रभावी रणनीति?

  2. Psycopg2 प्लेसहोल्डर्स के साथ तालिका में सम्मिलित करें

  3. PostgreSQL 9.3 . का उपयोग करके CTE UPSERT में DEFAULT मान उत्पन्न करें

  4. कैसे PostgreSQL में एक सरणी के तत्वों के लिए एक सूचकांक बनाने के लिए?

  5. PostgreSQL गलत छँटाई