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: