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"