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

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

Oracle डाटाबेस में, FROM_TZ() फ़ंक्शन टाइमस्टैम्प मान और समय क्षेत्र को TIMESTAMP WITH TIME ZONE में कनवर्ट करता है मूल्य।

आप टाइमस्टैम्प मान और समय क्षेत्र को दो अलग-अलग तर्कों के रूप में पास करते हैं, और फ़ंक्शन उन्हें TIMESTAMP WITH TIME ZONE के रूप में लौटाता है मूल्य।

सिंटैक्स

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

FROM_TZ(timestamp_value, time_zone_value)

जहां timestamp_value टाइमस्टैम्प है, और time_zone_value प्रारूप में एक वर्ण स्ट्रिंग है 'TZH:TZM' या एक वर्ण व्यंजक जो TZR . में एक स्ट्रिंग लौटाता है वैकल्पिक TZD . के साथ प्रारूप।

उदाहरण

यहां एक उदाहरण दिया गया है:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '-04:00')
FROM DUAL;

परिणाम:

01/JAN/30 12:30:35.000000000 PM -04:00

समय क्षेत्र क्षेत्र निर्दिष्ट करना

यहां एक उदाहरण दिया गया है जो समय क्षेत्र ऑफसेट के बजाय समय क्षेत्र क्षेत्र का उपयोग करता है:

DUAL से
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
FROM DUAL;

परिणाम:

01/JAN/30 12:30:35.000000000 PM AMERICA/ST_KITTS

समय क्षेत्र बदलें

आप AT LOCAL . का उपयोग कर सकते हैं या AT TIME ZONE परिणामी टाइमस्टैम्प को एक अलग समय क्षेत्र में बदलने के लिए क्लॉज।

उदाहरण:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
    AT TIME ZONE 'Asia/Bangkok'
FROM DUAL;

परिणाम:

01/JAN/30 11:30:35.000000000 PM ASIA/BANGKOK

और यहाँ यह AT LOCAL . का उपयोग कर रहा है :

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'America/St_Kitts')
    AT LOCAL
FROM DUAL;

परिणाम:

02/JAN/30 02:30:35.000000000 AM AUSTRALIA/BRISBANE

आप SESSIONTIMEZONE . का उपयोग कर सकते हैं वर्तमान सत्र के समय क्षेत्र की जाँच करने के लिए कार्य करता है, और DBTIMEZONE डेटाबेस के समय क्षेत्र की जाँच करने के लिए।

अमान्य समय क्षेत्र

अमान्य समय क्षेत्र पास करने से त्रुटि होती है:

DUAL से
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'Mars/Rover')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', 'Mars/Rover')
FROM DUAL
Error report -
ORA-01882: timezone region not found

आप V$TIMEZONE_NAMES को क्वेरी करके मान्य समय क्षेत्र क्षेत्रों की सूची प्राप्त कर सकते हैं देखें।

यहां बताया गया है कि जब हम समय क्षेत्र ऑफ़सेट प्रदान करते हैं जो स्वीकृत सीमा से बाहर होता है:

SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '+50:00')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', '+50:00')
FROM DUAL
Error report -
ORA-01874: time zone hour must be between -15 and 15

अशक्त तर्क

पासिंग null पहले तर्क के परिणामस्वरूप त्रुटि होती है:

SET NULL 'null';
SELECT 
    FROM_TZ(null, '+10:00')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT 
    FROM_TZ(null, '+10:00')
FROM DUAL
Error at Command Line : 2 Column : 13
Error report -
SQL Error: ORA-00932: inconsistent datatypes: expected TIMESTAMP got CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:

पासिंग null दूसरे तर्क के लिए null returns लौटाता है :

SET NULL 'null';
SELECT 
    FROM_TZ(TIMESTAMP '2030-01-01 12:30:35', null)
FROM DUAL;

परिणाम:

null

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

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

तर्कों की अमान्य संख्या

तर्कों की अमान्य संख्या पास करने से त्रुटि होती है:

SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT FROM_TZ(TIMESTAMP '2030-01-01 12:30:35')
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*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. SQL देव में LongOpsWatcher

  2. Oracle डाटाबेस में PL/SQL सबरूटीन्स के लिए कॉलिंग नोटेशन

  3. TO_CHAR(संख्या) Oracle में कार्य

  4. Oracle में CTE बनाना

  5. EM12c अब DB12c को रेपो के लिए अनुमति देता है