sql >> Database >  >> RDS >> Oracle

datum/tijd Conversie tussen verschillende tijdzones

Laten we eerst je uitdrukking ontbinden

FROM_TZ(CAST(TO_DATE(TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS'), 'DDMMYYYY:HH24:MI:SS') AS TIMESTAMP), 'Europe/London') AT TIME ZONE 'America/New_York'

doet het volgende:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Converteer created_date waarde naar VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Converteer het terug naar een DATE
  3. CAST(... AS TIMESTAMP) -> Converteer het naar een TIMESTAMP (zonder tijdzone)
  4. FROM_TZ(..., 'Europe/London') -> Voeg er tijdzone 'Europe/London' aan toe
  5. ... AT TIME ZONE 'America/New_York' -> Converteren naar tijdzone 'America/New_York'

Punt 1,2 en 3 zijn nutteloos! Sinds created_date is een TIMESTAMP je kunt het korter doen

TO_CHAR(FROM_TZ(q.created_date, 'Europe/London') AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')

In het geval dat uw SESSIONTIMEZONE is Europe/London je kunt zelfs

TO_CHAR(q.created_date AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')


  1. Python zlib-uitvoer, hoe te herstellen uit de mysql utf-8-tabel?

  2. Hoe maak je een relatietabel in MySQL?

  3. Problemen oplossen met SQL Server-replicatie

  4. mysql tabel dynamisch maken