sql >> Database teknologi >  >> RDS >> Oracle

dato/klokkeslæt Konvertering mellem forskellige tidszoner

Lad os først opløse dit udtryk

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ølgende:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Konverter created_date værdi til VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Konverter det tilbage til en DATE
  3. CAST(... AS TIMESTAMP) -> Konverter det til en TIMESTAMP (uden tidszone)
  4. FROM_TZ(..., 'Europe/London') -> Vedhæft tidszonen 'Europa/London' til den
  5. ... AT TIME ZONE 'America/New_York' -> Konverter til tidszonen 'America/New_York'

Punkt 1,2 og 3 er ubrugelige! Siden created_date er et TIMESTAMP du kan gøre det kortere

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

I tilfælde af din SESSIONTIMEZONE er Europe/London du kan endda lave

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


  1. Oracle:Hvordan kan jeg angive bogstaver i tegn i TO_DATE-konverteringer?

  2. Opdater div, men kun hvis der er nyt indhold fra php-filen

  3. Data for lange til kolonne - hvorfor?

  4. Er forberedte udsagn cachelagret på serversiden på tværs af flere sideindlæsninger med PHP?