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

Преобразуване на часови зони на Oracle (с помощта на from_tz)

to_timestamp() получава низ (VARCHAR2, CHAR ...), ако се опитате да му дадете дата, тогава oracle ще го преобразува в низ според NLS_DATE_FORMAT, който може да варира в различни среди и да върне неочаквани резултати (както в този случай) .
Това, което трябва да направите, е първо да използвате to_char, така че вашата заявка да изглежда така:

select to_date(to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM'),'YYYY-MM-DD HH:MI:SS PM') as localtime
from table

АКТУАЛИЗАЦИЯ: ако те разбирам правилно, значи искаш нещо подобно:

select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
    from table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. В една SQL заявка колко индекса може да използва заявката от една таблица?

  2. Как да вмъкнете UUID в колона RAW(16).

  3. Как мога да избегна твърде дълги грешки в необработената променлива дължина в SQL Developer?

  4. Има ли начин да принудите Oracle да промени плана на заявка, без да използвате подсказки?

  5. Изявление на Oracle Sql в java