Una DATE Oracle il tipo di dati non ha un fuso orario:è necessario un TIMESTAMP WITH TIMEZONE tipo di dati:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Se vuoi convertire in DATE (e la regione del fuso orario è sempre CET ) allora puoi usare:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Se lo vuoi come DATE tipo di dati e per rispettare il fuso orario nella stringa originale, dovrai (1) convertirlo in un TIMESTAMP WITH TIMEZONE tipo di dati; (2) convertire quel valore in un fuso orario standardizzato (l'UTC è spesso usato per questo); quindi (3) convertilo in una data:
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;
Che produrrà la data 2016-11-24 14:20:52 (la rappresentazione UTC della data di input).