Oracle
 sql >> база данни >  >> RDS >> Oracle

дата/час Преобразуване между различни часови зони

Първо нека разтворим изражението ви

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'

прави следното:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Преобразуване на created_date стойност на VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Преобразувайте го обратно в DATE
  3. CAST(... AS TIMESTAMP) -> Преобразувайте го в TIMESTAMP (без часова зона)
  4. FROM_TZ(..., 'Europe/London') -> Прикрепете часова зона „Европа/Лондон“ към него
  5. ... AT TIME ZONE 'America/New_York' -> Преобразуване в часова зона 'America/New_York'

Точка 1,2 и 3 са безполезни! От created_date е TIMESTAMP можете да го направите по-кратко

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

В случай, че вашият SESSIONTIMEZONE е Europe/London можете дори да направите

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Long Raw проблем

  2. Как да използвам case оператор при условие where?

  3. Oracle diff:как да сравним две таблици?

  4. Как да получите n-тия низ във всяка обща дума или изречение с разделител за интервал

  5. Грешка на Oracle ORA-28759:грешка при отваряне на файл при заявка на utl_http пакет