#database #oracle #datetime #time #utc
Вопрос:
Я работаю с базой данных Oracle (версия 12c), содержащей date
столбец с датами в формате YYY-MM-DD H23:Mi:SS
.
Все даты хранятся в EST.
Я конвертирую эти даты в UTC 2021-09-23 09:12:22
, чтобы они выглядели так 2021-09-23 14:12:22
.
У меня есть следующий запрос:
SELECT my_date,
FROM_TZ(CAST(my_date AS TIMESTAMP), 'America/New_York') AT TIME ZONE 'UTC' AS my_date_utc
FROM my_table
Вот образец моих результатов:
my_date my_date_utc
------------------- -------------------
2018-04-28 21:21:26 2018-04-29 01:21:26.000000 00:00
2018-12-18 07:42:25 2018-12-18 12:42:25.000000 00:00
Как удалить «.000000 00:00» из результатов? Таким образом, результат будет выглядеть следующим образом:
my_date my_date_utc
------------------- -------------------
2018-04-28 21:21:26 2018-04-29 01:21:26
2018-12-18 07:42:25 2018-12-18 12:42:25
Комментарии:
1. Вы хотите отобразить результат без доли секунды и информации о часовом поясе, или вы действительно хотите изменить тип данных с «отметка времени с часовым поясом» на «дата»? Если это просто способ отображения результата, используйте
to_char
с нужной моделью формата; если вам действительно нужно изменить тип данных, оберните внутриcast ( .... as date)
.2. @mathguy Я хочу отобразить результат без доли секунды и часового пояса. Так что «2018-04-29 01:21:26.000000 00:00» появится как «2018-04-29 01:21:26»
Ответ №1:
Чтобы отобразить метку времени с часовым поясом в любом (допустимом) желаемом формате, вам нужно использовать to_char
. Что-то вроде этого (не проверено):
SELECT my_date,
to_char(
FROM_TZ(CAST(my_date AS TIMESTAMP), 'America/New_York')
AT TIME ZONE 'UTC', 'yyyy-mm-dd hh24:mi:ss') AS my_date_utc
FROM my_table