sql >> Base de Datos >  >> RDS >> Oracle

Java Date.toString en TO_DATE de Oracle

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