sql >> Databáze >  >> RDS >> Oracle

datum/čas Převod mezi různými časovými pásmy

Nejprve rozpusťte váš výraz

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'

dělá následující:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Převést created_date hodnotu na VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Převeďte jej zpět na DATE
  3. CAST(... AS TIMESTAMP) -> Převeďte jej na TIMESTAMP (bez časového pásma)
  4. FROM_TZ(..., 'Europe/London') -> Připojte k němu časové pásmo 'Evropa/Londýn'
  5. ... AT TIME ZONE 'America/New_York' -> Převést na časové pásmo 'Amerika/New_York'

Body 1,2 a 3 jsou k ničemu! Od created_date je TIMESTAMP můžete to udělat kratší

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

V případě vašeho SESSIONTIMEZONE je Europe/London můžete dokonce vyrobit

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


  1. Co je jednoduchý program nebo skript příkazového řádku pro zálohování databází SQL serveru?

  2. Django + MySQL - Neznámé kódování:utf8mb4

  3. Ignorovat výsledky null v dotazech MySQL JOIN

  4. Připojení k databázi MySQL pomocí mé aplikace pro iOS