Как удалить конечные 0 и смещение из базы данных Oracle

#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