Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Java Date.toString no TO_DATE do Oracle


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).