Agaknya T dan Z yang diperbaiki sedikit membingungkan Anda, karena tidak normal model format tanggal-waktu elemen. Tapi dokumentasi mengatakan:
Jadi Anda menyertakan T dan Z dalam tanda kutip ganda, sebagai "T"
dan "Z"
, dalam model format Anda.
Jika Anda tidak tertarik dengan zona waktu, Anda dapat menggunakan to_timestamp()
fungsi
:
to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
Atau jika Anda ingin memiliki zona waktu, Anda dapat menggunakan to_timestamp_tz()
fungsi
, yang akan default ke zona waktu sesi Anda saat ini (karena Anda tidak benar-benar menentukannya di sini, Z tidak ditafsirkan sebagai Zulu/UTC):
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
Jika Anda menginginkannya dengan zona waktu dan ingin menentukan bahwa itu adalah UTC, Anda dapat memaksanya dengan from_tz()
fungsi
:
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')
Untuk melihat perbedaan hasil produksi tersebut, tentukan zona waktu sesi sebagai demo:
alter session set time_zone = 'America/New_York';
select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;
NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK
24-MAR-15 07.08.24.000000000 UTC
Saya berasumsi Z adalah tetap dan nilai yang Anda dapatkan karena itu selalu mewakili UTC; jika Anda benar-benar mendapatkan zona waktu yang berbeda dalam nilai yang perlu Anda konversi, maka Anda harus mengekstrak dan menerapkannya - yang bisa dilakukan, tetapi sulit, dan tidak layak dilakukan kecuali Anda benar-benar memiliki situasi itu.