Oracle
 sql >> Base de données >  >> RDS >> Oracle

Java Date.toString dans TO_DATE d'Oracle

Une DATE Oracle le type de données n'a pas de fuseau horaire - vous avez besoin d'un TIMESTAMP WITH TIMEZONE type de données :

SELECT TO_TIMESTAMP_TZ(
         'Thu Nov 24 15:20:52 CET 2016',
         'DY MON DD HH24:MI:SS TZR YYYY'
       )
FROM DUAL

Si vous souhaitez convertir en DATE (et la région du fuseau horaire est toujours CET ) alors vous pouvez utiliser :

SELECT TO_DATE(
         'Thu Nov 24 15:20:52 CET 2016',
         'DY MON DD HH24:MI:SS "CET" YYYY'
       )
FROM DUAL

Si vous le voulez comme DATE type de données et pour respecter le fuseau horaire dans la chaîne d'origine, vous devrez (1) le convertir en un TIMESTAMP WITH TIMEZONE Type de données; (2) convertir cette valeur en un fuseau horaire normalisé (UTC est souvent utilisé pour cela) ; puis (3) convertissez-le en une date :

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;

Ce qui affichera la date 2016-11-24 14:20:52 (la représentation UTC de la date d'entrée).