Oracle DATE
tipe data tidak memiliki zona waktu - Anda memerlukan TIMESTAMP WITH TIMEZONE
tipe data:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Jika Anda ingin mengonversi ke DATE
(dan wilayah zona waktu selalu CET
) maka Anda dapat menggunakan:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Jika Anda menginginkannya sebagai DATE
tipe data dan untuk menghormati zona waktu dalam string asli maka Anda harus (1) mengonversinya menjadi TIMESTAMP WITH TIMEZONE
tipe data; (2) mengonversi nilai tersebut ke zona waktu standar (UTC sering digunakan untuk ini); lalu (3) konversikan itu menjadi tanggal:
SELECT CAST(
TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
AT TIME ZONE 'UTC'
AS DATE
)
FROM DUAL;
Yang akan menampilkan tanggal 2016-11-24 14:20:52
(representasi UTC dari tanggal input).