Um Oracle
DATE
tipo de dados não tem um fuso horário - você precisa de um TIMESTAMP WITH TIMEZONE
tipo de dados:SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
Se você deseja converter para um
DATE
(e a região do fuso horário é sempre CET
) então você pode usar:SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
Se você quiser como
DATE
tipo de dados e para respeitar o fuso horário na string original, você precisará (1) convertê-lo em um TIMESTAMP WITH TIMEZONE
tipo de dados; (2) converter esse valor para um fuso horário padronizado (UTC é frequentemente usado para isso); então (3) converta isso em uma 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;
Que produzirá a data
2016-11-24 14:20:52
(a representação UTC da data de entrada).