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

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

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

सिंटैक्स

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

TO_TIMESTAMP(char [ DEFAULT return_value ON CONVERSION ERROR ]
  [, fmt [, 'nlsparam' ] ])

char तर्क कोई भी अभिव्यक्ति हो सकता है जो CHAR . के वर्ण स्ट्रिंग का मूल्यांकन करता है , VARCHAR2 , NCHAR , या NVARCHAR2 डेटा प्रकार।

वैकल्पिक fmt char . के प्रारूप को निर्दिष्ट करता है . अगर आप fmt . को छोड़ देते हैं , फिर char TIMESTAMP . के डिफ़ॉल्ट प्रारूप में होना चाहिए डेटा प्रकार, जो NLS_TIMESTAMP_FORMAT . द्वारा निर्धारित किया जाता है इनिशियलाइज़ेशन पैरामीटर (देखें कि अपने Oracle सत्र के दिनांक स्वरूप की जाँच कैसे करें)।

वैकल्पिक 'nlsparam' तर्क उस भाषा को निर्दिष्ट करता है जिसमें महीने और दिन के नाम और संक्षिप्त रूप दिए गए हैं। यह निम्नलिखित रूप लेता है:

'NLS_DATE_LANGUAGE = language'

उदाहरण

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

SELECT 
    TO_TIMESTAMP(
        '25-Aug-2030 18:10:35.123456789', 
        'DD-Mon-RRRR HH24:MI:SS.FF'
    )
FROM DUAL;

परिणाम:

25/AUG/30 06:10:35.123456789 PM

परिणाम का प्रारूप आपके सत्र के NLS_TIMESTAMP_FORMAT द्वारा निर्धारित किया जाता है पैरामीटर। हम NLS_TIMESTAMP_FORMAT . के मान की जांच कर सकते हैं V$NLS_PARAMETERS . को क्वेरी करके पैरामीटर देखें:

SELECT VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER = 'NLS_TIMESTAMP_FORMAT';

परिणाम:

DD/MON/RR HH12:MI:SSXFF AM

NLS_TIMESTAMP_FORMAT . का डिफ़ॉल्ट मान पैरामीटर NLS_TERRITORY . से लिया गया है पैरामीटर। मेरे मामले में NLS_TERRITORY पैरामीटर है AUSTRALIA

जब मैं NLS_TERRITORY बदलता हूं, तो यहां बताया गया है दूसरे क्षेत्र के लिए पैरामीटर, फिर TO_TIMESTAMP() . पर कॉल करें फिर से:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT 
    TO_TIMESTAMP(
        '25-Aug-2030 18:10:35.123456789', 
        'DD-Mon-RRRR HH24:MI:SS.FF'
    )
FROM DUAL;

परिणाम:

25-AUG-30 06.10.35.123456789 PM

इस बार परिणाम एक अलग प्रारूप में लौटाया गया है।

आप वैकल्पिक रूप से NLS_TIMESTAMP_FORMAT . का मान बदल सकते हैं सीधे पैरामीटर। यह अन्य मापदंडों को प्रभावित किए बिना उस पैरामीटर को बदल देगा। अधिक जानकारी और उदाहरणों के लिए अपने Oracle सत्र में दिनांक स्वरूप कैसे बदलें देखें।

डिफ़ॉल्ट प्रारूप

इस उदाहरण में मैं fmt . को छोड़ देता हूं तर्क:

SELECT 
    TO_TIMESTAMP(
        '25-AUG-30 06.10.35.123456789 PM'
    )
FROM DUAL;

परिणाम:

25-AUG-30 06.10.35.123456789 PM

ऐसा करते समय, तर्क TIMESTAMP . के डिफ़ॉल्ट स्वरूप में होना चाहिए डेटा प्रकार, जो NLS_TIMESTAMP_FORMAT . द्वारा निर्धारित किया जाता है आरंभीकरण पैरामीटर।

यहां एक उदाहरण दिया गया है कि क्या होता है जब हम एक मान पास करते हैं जो इस प्रारूप के अनुरूप नहीं है:

DUAL से
SELECT 
    TO_TIMESTAMP(
        '25-Aug-2030 18:10:35.123456789'
    )
FROM DUAL;

परिणाम:

ORA-01849: hour must be between 1 and 12
01849. 00000 -  "hour must be between 1 and 12"
*Cause:    
*Action:

इस मामले में, मैंने 24 घंटे के समय का उपयोग करने वाला मान पारित किया, लेकिन मेरा NLS_TIMESTAMP_FORMAT पैरामीटर AM/PM डिज़ाइनर के साथ 12 घंटे की घड़ी निर्दिष्ट करता है।

इसे ठीक करने के लिए, मुझे या तो अपना इनपुट बदलना होगा, या NLS_TIMESTAMP_FORMAT का मान बदलना होगा पैरामीटर।

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

तर्क को TIMESTAMP में बदलने के दौरान त्रुटि होने की स्थिति में आपके पास वापसी के लिए मान प्रदान करने का विकल्प भी होता है टाइप करें।

उदाहरण:

SET NULL 'null';
SELECT 
    TO_TIMESTAMP(
    'Oops!'
    DEFAULT null ON CONVERSION ERROR
    )
FROM DUAL;

परिणाम:

null

इस मामले में मैंने निर्दिष्ट किया है कि null जब भी कोई रूपांतरण त्रुटि होती है तो उसे वापस कर दिया जाना चाहिए।

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

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

'nlsparam' तर्क

वैकल्पिक 'nlsparam' तर्क उस भाषा को निर्दिष्ट करता है जिसमें महीने और दिन के नाम और संक्षिप्त रूप दिए गए हैं। यह निम्नलिखित रूप लेता है:

'NLS_DATE_LANGUAGE = language'

उदाहरण

SELECT 
    TO_TIMESTAMP(
        '25-agosto-2030 18:10:35.123456789', 
        'DD-Month-RRRR HH24:MI:SS.FF',
        'NLS_DATE_LANGUAGE = SPANISH'
    )
FROM DUAL;

परिणाम:

25-AUG-30 06.10.35.123456789 PM

ध्यान दें कि परिणाम अभी भी वर्तमान सत्र के NLS_TIMESTAMP_FORMAT के अनुसार लौटाया गया है पैरामीटर। बस इतना ही इनपुट एक अलग भाषा में था।

जब मैं agosto को बदलता हूं तो यह होता है से August . तक उसी 'nlsparam' . का उपयोग करते समय मूल्य:

SELECT 
    TO_TIMESTAMP(
        '25-August-2030 18:10:35.123456789', 
        'DD-Month-RRRR HH24:MI:SS.FF',
        'NLS_DATE_LANGUAGE = SPANISH'
    )
FROM DUAL;

परिणाम:

ORA-01843: not a valid month
01843. 00000 -  "not a valid month"
*Cause:    
*Action:

ऐसा इसलिए हुआ क्योंकि मैंने 'nlsparam' द्वारा निर्दिष्ट भाषा में तारीख प्रदान नहीं की थी तर्क (स्पेनिश)।

इसे English में बदलना इस समस्या को हल करता है:

SELECT 
    TO_TIMESTAMP(
        '25-August-2030 18:10:35.123456789', 
        'DD-Month-RRRR HH24:MI:SS.FF',
        'NLS_DATE_LANGUAGE = English'
    )
FROM DUAL;

परिणाम:

25-AUG-30 06.10.35.123456789 PM

अगर यह मदद करता है तो Oracle में समर्थित भाषाओं की सूची कैसे लौटाएं देखें।

अशक्त तर्क

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

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

परिणाम:

null

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

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

SELECT TO_TIMESTAMP()
FROM DUAL;

परिणाम:

ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:
Error at Line: 8 Column: 8

हालाँकि, बहुत अधिक तर्क पारित करने से कोई समस्या नहीं होती है, जब तक कि पहले तीन मान्य हैं:

SELECT 
    TO_TIMESTAMP(
        '25-Aug-2030 18:10:35.123456789', 
        'DD-Mon-RRRR HH24:MI:SS.FF',
        'NLS_DATE_LANGUAGE = English',
        'Oops!',
        'Dang!',
        'Homer',
        'Symptom'
    )
FROM DUAL;

परिणाम:

25-AUG-30 06.10.35.123456789 PM

  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 में इस पथ को उल्टा करें z/y/x से x/y/z . तक

  2. Oracle RAC परिप्रेक्ष्य से SQL सर्वर क्लस्टरिंग

  3. Oracle SQL में सिंगल कोट को कैसे हैंडल करें

  4. एक दृश्य में एक अशक्त स्तंभ कैसे बनाएं?

  5. ईएफ 4, आंशिक कक्षाएं कैसे जोड़ें