2016-01-13 5 views
0

Мое требование простое, как вычислить разницу во времени между двумя колонки в ульяHive: Как рассчитать разницу во времени

Пример

TIME_START: 10:15:00

Time_End: 11:45:00

мне нужно сделать (Time_End-TIME_START) = 1:30:00

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

ответ

0

Вам нужно преобразовать HH: MM: SS раз в секундах, получить разницу между ними и переустановить ее как другое время HH: MM: SS.

+0

@williams Я пробовал много вариантов, улей не становится простым способом конвертировать. Например, я могу преобразовать из строки во времени, но не смог найти разницу, показывающую нуль из ниже запроса SUBSTR (from_unixtime (UNIX_TIMESTAMP (Time_End, 'HH: mm: ss')), 12) - SUBSTR (from_unixtime (UNIX_TIMESTAMP (Time_Start, 'HH: mm: ss')), 12) Надеюсь, вы должны увидеть в обзоре улья – Elavarasan

+0

Проверьте это [ответ] (http://stackoverflow.com/a/4927884/4038957). –

+0

Да, но снова я спрашиваю о перспективах улья. Если я напишу java, чтобы получить разницу во времени, мой код будет слишком сложным .... – Elavarasan

2

Language manual содержит описание всех доступных функций datetime. Разницу в секундах можно рассчитать таким образом: hour(time_end) * 3600 + minute(time_end) * 60 + second(time_end) - hour(time_start) * 3600 - minute(time_start) * 60 - second(time_start). Вы можете обернуть его from_unixtime(..., 'HH:mm:ss'), чтобы получить форматированный разность времени.

Возможно, было бы лучше, чем write a UDF, а не помещать все это в ваш запрос.

+0

Спасибо вам большое! эта логика преобразования работала для моего требования, и вы спасли мое время :) +1 – Elavarasan

Смежные вопросы