Oracle
 sql >> Database >  >> RDS >> Oracle

Java Date.toString in TO_DATE di Oracle

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