आपके प्रश्न में कुछ भ्रम है:
- एक
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