Oracle डाटाबेस में, TO_DSINTERVAL()
फ़ंक्शन अपने तर्क को INTERVAL DAY TO SECOND
. के मान में बदल देता है डेटा प्रकार।
सिंटैक्स
वाक्य रचना इस प्रकार है:
TO_DSINTERVAL ( ' { sql_format | ds_iso_format } '
[ DEFAULT return_value ON CONVERSION ERROR ] )
तो आपके पास तर्क को SQL स्वरूप या ISO प्रारूप में पारित करने का विकल्प है।
यहां अंतर है:
sql_format
SQL अंतराल प्रारूप SQL मानक (ISO/IEC 9075) के साथ संगत है।ds_iso_format
आईएसओ अवधि प्रारूप आईएसओ 8601:2004 मानक के साथ संगत है।
sql_format
. के लिए सिंटैक्स इस तरह जाता है:
[+ | -] days hours : minutes : seconds [. frac_secs ]
कहां:
days
0 और 999999999 के बीच एक पूर्णांक हैhours
0 और 23 के बीच एक पूर्णांक हैminutes
औरseconds
0 और 59 के बीच पूर्णांक हैंfrac_secs
.0 और .999999999 के बीच सेकंड का भिन्नात्मक भाग है।- एक या अधिक रिक्त स्थान दिनों को घंटों से अलग करते हैं। प्रारूप तत्वों के बीच अतिरिक्त रिक्त स्थान की अनुमति है।
और ds_iso_format
. के लिए सिंटैक्स :
[-] P [days D]
[T [hours H] [minutes M] [seconds [. frac_secs] S ] ]
कहां:
days
,hours
,minutes
औरseconds
0 और 999999999 के बीच पूर्णांक हैं।frac_secs
.0 और .999999999 के बीच सेकंड का भिन्नात्मक भाग है।- मान में किसी रिक्त स्थान की अनुमति नहीं है।
- यदि आप
T
specify निर्दिष्ट करते हैं , तो आपकोhours
. में से कम से कम एक निर्दिष्ट करना होगा ,minutes
, याseconds
मान।
उदाहरण
प्रदर्शित करने के लिए यहां कुछ उदाहरण दिए गए हैं।
एसक्यूएल प्रारूप
यहाँ, मैं तर्क को SQL स्वरूप में पास करता हूँ:
SELECT TO_DSINTERVAL('135 08:35:47.123456789')
FROM DUAL;
परिणाम:
+135 08:35:47.123456789
यदि आवश्यक हो तो हम इसे इसके चिन्ह के साथ जोड़ सकते हैं। आइए इसे नकारात्मक पर पलटें:
SELECT TO_DSINTERVAL('-135 08:35:47.123456789')
FROM DUAL;
परिणाम:
-135 08:35:47.123456789
आईएसओ प्रारूप
इस उदाहरण में मैं वही मान पास करता हूं, लेकिन ISO प्रारूप में:
DUAL सेSELECT TO_DSINTERVAL('P135DT08H35M47.123456789S')
FROM DUAL;
परिणाम:
+135 08:35:47.123456789
यहाँ यह एक ऋणात्मक मान के साथ है:
DUAL सेSELECT TO_DSINTERVAL('-P135DT08H35M47.123456789S')
FROM DUAL;
परिणाम:
-135 08:35:47.123456789
रूपांतरण त्रुटि पर एक डिफ़ॉल्ट मान प्रदान करें
आपके पास उस स्थिति में लौटने के लिए एक मान प्रदान करने का विकल्प भी है जब तर्क को INTERVAL DAY TO SECOND
में परिवर्तित करते समय कोई त्रुटि होती है। टाइप करें।
उदाहरण:
SELECT
TO_DSINTERVAL(
'Oops!'
DEFAULT '00 00:00:00' ON CONVERSION ERROR
)
FROM DUAL;
परिणाम:
+00 00:00:00.000000
अशक्त तर्क
पासिंग null
परिणाम null
:
SET NULL 'null';
SELECT
TO_DSINTERVAL(null)
FROM DUAL;
परिणाम:
null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null
. खाली स्थान लौटाते हैं SQL SELECT
. के परिणामस्वरूप होता है बयान।
हालांकि, आप SET NULL
. का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null
लौटाया जाना चाहिए।
अवैध तर्क गणना
बिना किसी तर्क के फ़ंक्शन को कॉल करने से त्रुटि होती है:
SELECT TO_DSINTERVAL()
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT TO_DSINTERVAL() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
और बहुत अधिक तर्कों को पारित करने से त्रुटि उत्पन्न होती है:
SELECT TO_DSINTERVAL('P135D', 'P135D')
FROM DUAL;
परिणाम:
Error starting at line : 1 in command - SELECT TO_DSINTERVAL('P135D', 'P135D') FROM DUAL Error report - ORA-12702: invalid NLS parameter string used in SQL function