वास्तव में आपकी क्वेरी में त्रुटि होनी चाहिए ORA-01857: not a valid time zone
या ORA-01882: timezone region not found
PDT
मान्य समय क्षेत्र क्षेत्र नहीं है, अर्थात यह अस्पष्ट है। PDT
. के विभिन्न अर्थ प्राप्त करने के लिए इस क्वेरी को चलाएँ :
SELECT tzabbrev, TZ_OFFSET(tzname), tzname
FROM v$timezone_names
WHERE tzabbrev = 'PDT'
ORDER BY 2;
TZABBREV TZ_OFFSET(TZNAME) TZNAME
PDT -06:00 America/Inuvik
PDT -07:00 US/Pacific-New
PDT -07:00 America/Ensenada
PDT -07:00 America/Dawson
PDT -07:00 America/Dawson_Creek
PDT -07:00 America/Los_Angeles
PDT -07:00 America/Tijuana
PDT -07:00 America/Vancouver
PDT -07:00 America/Whitehorse
PDT -07:00 Canada/Pacific
PDT -07:00 Canada/Yukon
PDT -07:00 Mexico/BajaNorte
PDT -07:00 PST
PDT -07:00 PST8PDT
PDT -07:00 US/Pacific
PDT -08:00 America/Juneau
आपको PST
. का उपयोग करना होगा समय क्षेत्र क्षेत्र के रूप में। डेलाइट सेविंग सेटिंग तब दिए गए दिन से निर्धारित की जाती हैं:
SELECT
TO_TIMESTAMP_TZ('Jan 29 14:12:56 PST 2015','Mon dd hh24:mi:ss TZR YYYY') dt_ts_winter,
TO_TIMESTAMP_TZ('Jun 29 14:12:56 PST 2015','Mon dd hh24:mi:ss TZR YYYY') dt_ts_summer
FROM dual;
DT_TS_WINTER DT_TS_SUMMER
2015-01-29 14:12:56.000000000 -08:00 2015-06-29 14:12:56.000000000 -07:00
चूंकि आपके मान VARCHAR2
. के रूप में संग्रहीत हैं (अब आप जानते हैं कि आपको ऐसा क्यों नहीं करना चाहिए) आप इसे REGEXP_REPLACE(dt_string, 'PDT', 'PST')
से बदल सकते हैं।