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

TO_YMINTERVAL () Oracle में फ़ंक्शन

Oracle डेटाबेस में, TO_YMINTERVAL() फ़ंक्शन अपने तर्क को INTERVAL MONTH TO YEAR . के मान में बदल देता है डेटा प्रकार।

सिंटैक्स

वाक्य रचना इस प्रकार है:

TO_YMINTERVAL
  ( '  { [+|-] years - months 
       | ym_iso_format 
       } '
    [ DEFAULT return_value ON CONVERSION ERROR ]
  )

आपके पास तर्क को SQL स्वरूप या ISO प्रारूप में पारित करने का विकल्प है।

यहां अंतर है:

  • sql_format SQL अंतराल प्रारूप SQL मानक (ISO/IEC 9075) के साथ संगत है।
  • ds_iso_format आईएसओ अवधि प्रारूप आईएसओ 8601:2004 मानक के साथ संगत है।

SQL प्रारूप में, years 0 और 999999999, और months . के बीच एक पूर्णांक है 0 और 11 के बीच एक पूर्णांक है। प्रारूप तत्वों के बीच अतिरिक्त रिक्त स्थान की अनुमति है।

ISO फ़ॉर्मैट में (नीचे सिंटैक्स), साल और महीने 0 और 999999999 के बीच के पूर्णांक होते हैं। दिन, hours , minutes , seconds , और frac_secs गैर-ऋणात्मक पूर्णांक हैं, और निर्दिष्ट किए जाने पर उन्हें अनदेखा कर दिया जाता है। मूल्य में कोई रिक्त स्थान की अनुमति नहीं है। यदि आप T . निर्दिष्ट करते हैं , तो आपको hours . में से कम से कम एक निर्दिष्ट करना होगा , minutes , या seconds मान।

ds_iso_format . के लिए सिंटैक्स इस तरह जाता है:

[-] P [ years Y ] [months M] [days D]
  [T [hours H] [minutes M] [seconds [. frac_secs] S ] ]

उदाहरण

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

एसक्यूएल प्रारूप

यहाँ, मैं तर्क को SQL स्वरूप में पास करता हूँ:

SELECT TO_YMINTERVAL('1-2')
FROM DUAL;

परिणाम:

+01-02

इस मामले में, मैंने एक साल और दो महीने SQL फॉर्मेट में पास किए।

यदि आवश्यक हो तो हम इसे इसके चिन्ह के साथ जोड़ सकते हैं। आइए इसे नकारात्मक पर पलटें:

SELECT TO_YMINTERVAL('-1-2')
FROM DUAL;

परिणाम:

-01-02

आईएसओ प्रारूप

इस उदाहरण में मैं वही मान पास करता हूं, लेकिन ISO प्रारूप में:

SELECT TO_YMINTERVAL('P1Y2M')
FROM DUAL;

परिणाम:

+01-02

यहाँ यह एक ऋणात्मक मान के साथ है:

DUAL से
SELECT TO_YMINTERVAL('-P1Y2M')
FROM DUAL;

परिणाम:

-01-02

रूपांतरण त्रुटि पर एक डिफ़ॉल्ट मान प्रदान करें

आपके पास उस स्थिति में वापस जाने के लिए एक मान प्रदान करने का विकल्प भी है जब तर्क को INTERVAL MONTH TO YEAR में परिवर्तित करते समय कोई त्रुटि होती है टाइप करें।

उदाहरण:

SELECT 
    TO_YMINTERVAL(
    '1y-02m'
    DEFAULT '00-00' ON CONVERSION ERROR
    )
FROM DUAL;

परिणाम:

+00-00

अशक्त तर्क

पासिंग null परिणाम null :

SET NULL 'null';
SELECT 
    TO_YMINTERVAL(null)
FROM DUAL;

परिणाम:

null

डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null लौटाया जाना चाहिए।

अवैध तर्क गणना

बिना किसी तर्क के फ़ंक्शन को कॉल करने से त्रुटि होती है:

SELECT TO_YMINTERVAL()
FROM DUAL;

परिणाम:

SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function

और बहुत अधिक तर्कों को पारित करने से त्रुटि उत्पन्न होती है:

SELECT TO_YMINTERVAL('P1Y2M', 'P3Y5M')
FROM DUAL;

परिणाम:

SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में अस्थायी डेटा के लिए प्रदर्शन विचार

  2. ओरेकल एसक्यूएल स्क्रिप्ट स्पूल फाइल कैसे बनाएं

  3. उपयोगिता:2 मिनट में एक तालिका से डेटा निर्यात करने के लिए पीएल/एसक्यूएल प्रक्रिया उत्पन्न करें

  4. Oracle संग्रहित प्रक्रिया उदाहरण में तालिका प्रकार

  5. Oracle डेटा प्रकार