Oracle डाटाबेस में, TO_CHAR(datetime) फ़ंक्शन डेटाटाइम या अंतराल मान को VARCHAR2 . में कनवर्ट करता है दिनांक प्रारूप द्वारा निर्दिष्ट प्रारूप में मान।
सिंटैक्स
वाक्य रचना इस प्रकार है:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) कहां:
datetimeDATE. का मान हो सकता है ,TIMESTAMP,TIMESTAMPWITHTIMEZONE,TIMESTAMPWITHLOCALTIMEZONEडेटा प्रकारintervalINTERVAL. का मान हो सकता हैDAYTOSECOND, याintervalYEARTOMONTHडेटा प्रकारfmtएक वैकल्पिक प्रारूप मॉडल है जो निर्दिष्ट करता है कि परिणाम कैसे स्वरूपित किया जाना चाहिए'nlsparam'एक वैकल्पिक तर्क है जो उस भाषा को निर्दिष्ट करता है जिसमें महीने और दिन के नाम और संक्षिप्त रूप लौटाए जाते हैं।
उदाहरण
प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है:
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL; परिणाम:
WED, 26 SEPTEMBER 2035
इसलिए, इसने पहले तर्क में प्रदान की गई तारीख को दूसरे तर्क द्वारा निर्दिष्ट प्रारूप में वापस कर दिया।
दूसरा तर्क प्रारूप मॉडल प्रदान करता है। प्रारूप मॉडल में एक या अधिक प्रारूप तत्व हो सकते हैं। उदाहरण के लिए, DY एक प्रारूप तत्व है, जैसा कि DD है , MONTH , आदि.
ओरेकल में डेटाटाइम प्रारूप तत्वों की यह पूरी सूची प्रारूप तत्वों की सूची के लिए देखें जिनका उपयोग इस फ़ंक्शन के साथ डेटाटाइम मानों को प्रारूपित करने के लिए किया जा सकता है।
डिफ़ॉल्ट प्रारूप
अगर आप fmt . को छोड़ देते हैं तर्क, परिणाम निम्नानुसार परिवर्तित किया जाएगा:
DATEमानों को डिफ़ॉल्ट दिनांक स्वरूप में मानों में बदल दिया जाता है।TIMESTAMPऔरTIMESTAMPWITHLOCALTIMEZONEमानों को डिफ़ॉल्ट टाइमस्टैम्प प्रारूप में मानों में बदल दिया जाता है।TIMESTAMPWITHTIMEZONEमानों को समय क्षेत्र प्रारूप के साथ डिफ़ॉल्ट टाइमस्टैम्प में मानों में बदल दिया जाता है।- अंतराल मानों को अंतराल शाब्दिक के संख्यात्मक प्रतिनिधित्व में बदल दिया जाता है।
यहां DATE को रूपांतरित करने का एक उदाहरण दिया गया है प्रारूप निर्दिष्ट किए बिना मान:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL; परिणाम:
26/SEP/35
इस मामले में, मेरे सत्र का डिफ़ॉल्ट दिनांक प्रारूप DD/MON/RR है , और इसलिए परिणाम यह दर्शाता है। मुझे पता है कि यह मेरे सत्र का डिफ़ॉल्ट दिनांक प्रारूप है क्योंकि मैंने V$NLS_PARAMETERS से पूछताछ की थी देखें, जो मुझे एनएलएस मापदंडों का वर्तमान मूल्य दिखाता है।
देखें कि एनएलएस पैरामीटर्स के मूल्यों की जांच कैसे करें यदि आपको उनकी जांच करने की आवश्यकता है।
यह भी देखें कि यदि आप अपने वर्तमान सत्र के लिए डिफ़ॉल्ट डेटाटाइम प्रारूप बदलना चाहते हैं तो अपने सत्र का दिनांक प्रारूप कैसे बदलें।
अंतराल
यहां एक उदाहरण दिया गया है जो डिफ़ॉल्ट प्रारूप में अंतराल मान को आउटपुट करता है:
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL; परिणाम:
+25-02
द 'nlsparam' तर्क
'nlsparam' तर्क उस भाषा को निर्दिष्ट करता है जिसमें महीने और दिन के नाम और संक्षिप्ताक्षर लौटाए जाते हैं। इस तर्क के निम्नलिखित रूप हो सकते हैं:
'NLS_DATE_LANGUAGE = language' उदाहरण:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL; परिणाम:
MIÉ, 26 SEPTIEMBRE 2035
अशक्त तर्क
पासिंग null परिणाम null :
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL; परिणाम:
null
डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।
हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। यहाँ मैंने निर्दिष्ट किया है कि स्ट्रिंग null लौटाया जाना चाहिए।
अनुपलब्ध तर्क
बिना किसी तर्क के फ़ंक्शन को कॉल करने से त्रुटि होती है:
SELECT TO_CHAR()
FROM DUAL; परिणाम:
Error starting at line : 1 in command - SELECT TO_CHAR() 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_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL; परिणाम:
Error starting at line : 1 in command - SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' ) FROM DUAL Error at Command Line : 1 Column : 72 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: