आपके प्रश्न में कुछ भ्रम है:
- एक
Date
डेटाटाइप समय क्षेत्र घटक को सहेजता नहीं है। जब आपTIMESTAMP WITH TIME ZONE
डालते हैं तो यह जानकारी हमेशा के लिए काट दी जाती है और हमेशा के लिए खो जाती है। एकDate
. में । - जब आप किसी तिथि को स्क्रीन पर प्रदर्शित करना चाहते हैं या किसी वर्ण API (XML, फ़ाइल...) के माध्यम से किसी अन्य सिस्टम को भेजना चाहते हैं, तो आप
TO_CHAR
का उपयोग करते हैं समारोह। Oracle में, एकDate
कोई प्रारूप नहीं है :यह समय की बात है। - पारस्परिक रूप से, आप
TO_TIMESTAMP_TZ
का उपयोग करेंगे एकVARCHAR2
. को कन्वर्ट करने के लिए एकTIMESTAMP
. के लिए , लेकिन यहDate
. को रूपांतरित नहीं करेगा एकTIMESTAMP
. के लिए । - आप
FROM_TZ
का उपयोग करते हैं समय क्षेत्र की जानकारी कोTIMESTAMP
. में जोड़ने के लिए (याDate
)। - Oracle में,
CST
एक समय क्षेत्र है लेकिनCDT
क्या नहीं है।CDT
एक दिन के उजाले की बचत जानकारी है। - चीजों को और अधिक जटिल बनाने के लिए,
CST/CDT
(-05:00
) औरCST/CST
(-06:00
) स्पष्ट रूप से अलग-अलग मान होंगे, लेकिन समय क्षेत्रCST
डिफ़ॉल्ट रूप से दिनांक के आधार पर दिन के उजाले की बचत जानकारी को इनहेरिट करेगा।
तो आपका रूपांतरण उतना आसान नहीं हो सकता जितना दिखता है।
यह मानते हुए कि आप एक Date
को बदलना चाहते हैं d
जो आप जानते हैं वह समय क्षेत्र CST/CST
पर मान्य है समय क्षेत्र पर समतुल्य CST/CDT
, आप उपयोग करेंगे:
SQL> SELECT from_tz(d, '-06:00') initial_ts,
2 from_tz(d, '-06:00') at time zone ('-05:00') converted_ts
3 FROM (SELECT cast(to_date('2012-10-09 01:10:21',
4 'yyyy-mm-dd hh24:mi:ss') as timestamp) d
5 FROM dual);
INITIAL_TS CONVERTED_TS
------------------------------- -------------------------------
09/10/12 01:10:21,000000 -06:00 09/10/12 02:10:21,000000 -05:00
मेरे डिफ़ॉल्ट टाइमस्टैम्प प्रारूप का उपयोग यहां किया गया है। मैं स्पष्ट रूप से एक प्रारूप निर्दिष्ट कर सकता हूं:
SQL> SELECT to_char(from_tz(d, '-06:00'),'yyyy-mm-dd hh24:mi:ss TZR') initial_ts,
2 to_char(from_tz(d, '-06:00') at time zone ('-05:00'),
3 'yyyy-mm-dd hh24:mi:ss TZR') converted_ts
4 FROM (SELECT cast(to_date('2012-10-09 01:10:21',
5 'yyyy-mm-dd hh24:mi:ss') as timestamp) d
6 FROM dual);
INITIAL_TS CONVERTED_TS
------------------------------- -------------------------------
2012-10-09 01:10:21 -06:00 2012-10-09 02:10:21 -05:00