Расчет разницы во времени в HIVE дает неправильный ответ - PullRequest
1 голос
/ 01 ноября 2019

Вычисление разницы во времени при ВИЧ и потребности в часах: минутах: секундах. Ответ, который я получаю, не совсем правильный.

Это запрос, который я пробовал

SELECT from_unixtime(UNIX_TIMESTAMP('2019-01-01 12:00:00') - UNIX_TIMESTAMP('2019-01-01 10:10:10'),'hh:mm:ss');

Ответ, который я получаю, 07: 49: 50

Как мне выполнить рефакторинг кода, чтобы получить ответ01: 49: 50

1 Ответ

2 голосов
/ 02 ноября 2019

@ user2510479

Как отмечает @mazaneicha, функция from_unixtime конвертируется в текущий часовой пояс системы, из-за которого ваш результат был 07:49:50 вместо 01:49:50

Чтобы получить ожидаемыйрезультат (если вы предпочитаете использовать функции Hive), вы можете преобразовать вывод из_unixtime в UTC и использовать date_format (по состоянию на Hive 1.2.0) ссылка , чтобы получить желаемый вывод

SELECT date_format(to_utc_timestamp(from_unixtime( 
      (UNIX_TIMESTAMP('2019-01-01 12:00:00') 
     - UNIX_TIMESTAMP('2019-01-01 10:10:10')) ),'EST'), 'HH:mm:ss')

Вы можете ссылаться на строку даты в формате ссылка

...