Опрос Oracle TIMESTAMP с помощью TIMEZONE - PullRequest
5 голосов
/ 09 февраля 2012

У меня есть столбец в таблице БД Oracle, который имеет тип TIMESTAMP(6) WITH TIME ZONE. Существуют строки данных с данными из разных часовых поясов, некоторые в формате UTC, некоторые в других смещениях часового пояса.

Есть ли способ, которым я могу запросить таблицу Oracle, чтобы результаты всегда возвращались как UTC, с соответствующим сдвигом времени? Есть ли что-то, что можно сделать по самому запросу, или, возможно, как-то изменить сеанс? Я попытался изменить часовой пояс сеанса на Utc, но, похоже, это влияет только на значение CURRENT_TIMESTAMP.

ALTER SESSION SET TIME_ZONE = 'Utc'

Например, если значение было сохранено как:

21-JAN-10 03.28.38.635000000 PM -05:00

запрос будет возвращен как

21-JAN-10 08.28.38.635000000 PM Utc

Пример определения таблицы

CREATE TABLE "MyDb"."Books"
  (
    "GUID" RAW(32) DEFAULT SYS_GUID(),
     "DATE_CREATED" TIMESTAMP (6) WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
);

1 Ответ

12 голосов
/ 09 февраля 2012

Вы должны иметь возможность использовать синтаксис AT TIME ZONE

SELECT column_name at time zone 'UTC'
  FROM your_table

т.е.

SQL> select * from foo;

COL1
---------------------------------------------------------------------------
09-FEB-12 01.48.40.072000 PM -05:00
09-FEB-12 10.49.26.613000 AM US/PACIFIC

SQL> select col1 at time zone 'UTC'
  2    from foo;

COL1ATTIMEZONE'UTC'
---------------------------------------------------------------------------
09-FEB-12 06.48.40.072000 PM UTC
09-FEB-12 06.49.26.613000 PM UTC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...