Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Datum/Uhrzeit Umrechnung zwischen verschiedenen Zeitzonen

Lassen Sie uns zuerst Ihren Ausdruck auflösen

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'

macht folgendes:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Konvertieren Sie created_date Wert zu VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Konvertieren Sie es zurück in ein DATE
  3. CAST(... AS TIMESTAMP) -> Wandeln Sie es in einen TIMESTAMP um (ohne Zeitzone)
  4. FROM_TZ(..., 'Europe/London') -> Zeitzone 'Europe/London' anhängen
  5. ... AT TIME ZONE 'America/New_York' -> In Zeitzone 'America/New_York' umwandeln

Punkt 1,2 und 3 sind nutzlos! Seit created_date ist ein TIMESTAMP Sie können es auch kürzer machen

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

Falls Ihre SESSIONTIMEZONE ist Europe/London Sie können sogar machen

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