sql >> Databasteknik >  >> RDS >> Oracle

Java Date.toString i Oracles TO_DATE

En Oracle DATE datatypen har ingen tidszon - du behöver en TIMESTAMP WITH TIMEZONE datatyp:

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

Om du vill konvertera till en DATE (och tidszonsregionen är alltid CET ) så kan du använda:

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

Om du vill ha det som en DATE datatyp och för att respektera tidszonen i den ursprungliga strängen måste du (1) konvertera den till en TIMESTAMP WITH TIMEZONE data typ; (2) konvertera det värdet till en standardiserad tidszon (UTC används ofta för detta); sedan (3) konvertera det till ett 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;

Vilket kommer att mata ut datumet 2016-11-24 14:20:52 (UTC-representationen av inmatningsdatumet).



  1. Hur kan jag VÄLJA den första raden med MAX(kolumnvärde)?

  2. Hur kombinerar man data från flera tabeller med SQL?

  3. MySQL-vydefinierarbehörigheter och fel 1356

  4. Kan inte visa data från QSqlQueryModel i en QML TableView