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

TO_CHAR (डेटाटाइम) Oracle में फ़ंक्शन

Oracle डाटाबेस में, TO_CHAR(datetime) फ़ंक्शन डेटाटाइम या अंतराल मान को VARCHAR2 . में कनवर्ट करता है दिनांक प्रारूप द्वारा निर्दिष्ट प्रारूप में मान।

सिंटैक्स

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

TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

कहां:

  • datetime DATE . का मान हो सकता है , TIMESTAMP , TIMESTAMP WITH TIME ZONE , TIMESTAMP WITH LOCAL TIME ZONE डेटा प्रकार
  • interval INTERVAL . का मान हो सकता है DAY TO SECOND , या interval YEAR TO MONTH डेटा प्रकार
  • 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 और TIMESTAMP WITH LOCAL TIME ZONE मानों को डिफ़ॉल्ट टाइमस्टैम्प प्रारूप में मानों में बदल दिया जाता है।
  • TIMESTAMP WITH TIME ZONE मानों को समय क्षेत्र प्रारूप के साथ डिफ़ॉल्ट टाइमस्टैम्प में मानों में बदल दिया जाता है।
  • अंतराल मानों को अंतराल शाब्दिक के संख्यात्मक प्रतिनिधित्व में बदल दिया जाता है।

यहां 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:

  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 डेटाबेस में INTO क्लॉज के साथ तत्काल निष्पादन का उपयोग कैसे करें

  2. Oracle - मैं किस TNS नाम फ़ाइल का उपयोग कर रहा हूँ?

  3. Oracle ODP.net प्रबंधित बनाम अप्रबंधित ड्राइवर

  4. जब कोई त्रुटि होती है तो मैं SQLPlus में किसी स्क्रिप्ट से कैसे बाहर निकलूं और SQLPlus को डिस्कनेक्ट या बाहर किए बिना SQLPlus प्रॉम्प्ट पर वापस आऊं?

  5. स्ट्रिंग को कई पंक्तियों में विभाजित करें