Una DATE
de Oracle el tipo de datos no tiene una zona horaria; necesita un TIMESTAMP WITH TIMEZONE
tipo de datos:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Si desea convertir a una DATE
(y la región de la zona horaria siempre es CET
) entonces puedes usar:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Si lo quieres como DATE
tipo de datos y para respetar la zona horaria en la cadena original, deberá (1) convertirlo a un TIMESTAMP WITH TIMEZONE
tipo de datos; (2) convertir ese valor a una zona horaria estandarizada (UTC se usa a menudo para esto); luego (3) convertir eso a una fecha:
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;
Que generará la fecha 2016-11-24 14:20:52
(la representación UTC de la fecha de entrada).