как изменить часовой пояс на MST в запросе sql? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть запрос, который выбирает часовой пояс в формате MST. Но для нескольких строк это дает в PT.

Я использовал запрос -

SELECT   cca.last_update_date,
to_char(cast(cast(cca.last_update_date as timestamp with time zone) at time zone 'MST' as timestamp),'HH:MI:SS AM') mst_time
FROM     CMP_CWB_AUDIT CCA

Кто-нибудь может мне помочь, как изменить формат времени на MST в запросе sql?

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Предполагая, что часовой пояс last_update_date указан в PST, вы можете просто запустить

SELECT cca.last_update_date,
   from_tz(cca.last_update_date, 'PST') at time zone 'MST' AS mst_time
FROM CMP_CWB_AUDIT CCA

Когда вы запускаете cast(last_update_date as timestamp with time zone), тогда Oracle фактически выполняет

from_tz(last_update_date, SESSIONTIMEZONE)

Если текущий часовой пояс сеанса равен PST, результат будет правильным. Однако, поскольку SESSIONTIMEZONE может измениться в любой момент, результат может быть неправильным.

Запуск CAST(<TIMESTAMP WITH TIME ZONE> AS TIMESTAMP) не имеет смысла, если ваш вывод 'HH:MI:SS AM', он ничего не меняет.

0 голосов
/ 13 февраля 2020

Тип данных TIMESTAMP не имеет часового пояса. Но если вы знаете, что last_update_date в MST, вы можете преобразовать его в TIMESTAMP WITH TIME ZONE, используя функцию FROM_TZ.

select from_tz( cca.last_update_date, 'MST' ) from CMP_CWB_AUDIT cca

Если столбец находится в другом часовом поясе, чем MST, вы можете преобразовать его, используя предложение AT TIME ZONE:

select from_tz( cca.last_update_date, 'UTC' ) at time zone 'MST' from CMP_CWB_AUDIT cca
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...