sql >> Databasteknik >  >> RDS >> Oracle

datum/tid Konvertering mellan olika tidszoner

Låt oss först lösa upp ditt uttryck

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'

gör följande:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Konvertera created_date värde till VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Konvertera tillbaka till en DATE
  3. CAST(... AS TIMESTAMP) -> Konvertera den till en TIMESTAMP (utan tidszon)
  4. FROM_TZ(..., 'Europe/London') -> Bifoga tidszonen 'Europa/London' till den
  5. ... AT TIME ZONE 'America/New_York' -> Konvertera till tidszon 'America/New_York'

Punkt 1,2 och 3 är värdelösa! Sedan created_date är en TIMESTAMP du kan göra det kortare

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

Om din SESSIONTIMEZONE är Europe/London du kan till och med göra

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


  1. Hur man lägger till en löpande räkning till rader i en "serie" av på varandra följande dagar

  2. Var loggas SQL Server-anslutningsförsök?

  3. Birt rapportdesign i eclipse med subrapportfilter

  4. MySQL Query körs men ger undantag