sql >> Database >  >> RDS >> Oracle

Java Date.toString in TO_DATE van Oracle

Een Oracle DATE gegevenstype heeft geen tijdzone - u hebt een TIMESTAMP WITH TIMEZONE nodig gegevenstype:

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

Als u wilt converteren naar een DATE (en de tijdzone is altijd CET ) dan kun je gebruiken:

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

Als je het wilt als een DATE gegevenstype en om de tijdzone in de originele string te respecteren, moet u (1) deze converteren naar een TIMESTAMP WITH TIMEZONE data type; (2) zet die waarde om naar een gestandaardiseerde tijdzone (hiervoor wordt vaak UTC gebruikt); dan (3) converteer dat naar een datum:

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;

Wat de datum 2016-11-24 14:20:52 . zal opleveren (de UTC-weergave van de invoerdatum).



  1. JPA- en JSON-operator native query

  2. Hoe tekens van Oracle naar XML te coderen?

  3. Hoe lees ik de documentatiesyntaxis voor PostgreSQL-opdrachten?

  4. Waarden invoegen in een tabel met dynamische kolommen Jdbc/Mysql