2016-10-18 9 views
2

Как я могу вычесть 2 столбца временной метки в куст и сохранить результат в отдельном столбце в формате эквивалентных часов?Операции с меткой времени в кусте

+0

Я в основном имеют 2 колонки: ** Дата_начала ** и ** дата_окончания ** в таблице в улье, и я хочу, чтобы заполнить новый столбец с именем ** elapsed_hours **, запустив DML –

ответ

2

Скажем, если у вас есть метку времени в данном формате: 2016-10-16 10: 51: 00.000

Вы можете попробовать следующее:

SELECT 
    cast(
    round(
     cast((e-s) as double) * 1000 
    ) as int 
) time_difference 
FROM (SELECT cast(starttime as double) s, cast(endtime as double) e from table1) q; 

Это даст вам разницу обе отметки времени в миллисекундах. Затем вы можете преобразовать его в ожидаемый формат (часы, дни и т. Д.).

+0

Это дает мне ошибка, говорящая ** Отсутствующий ключевой слово ** после функции броска –

+0

Надеюсь, вы переименовали столбцы в соответствии с схемой. Не могли бы вы рассказать всю ошибку, которую вы получаете? –

+0

обновил запрос. Можете ли вы попробовать сейчас? –

0

Используйте функцию unix_timestamp, чтобы преобразовать временную метку улья в несколько секунд с эпохи. Вычитание результатов timestemp unix дает ответ в секундах.

SELECT start_dttm, 
      (unix_timestamp(end_dttm) - unix_timestamp(start_dttm))/60 AS duration_in_minutes 
    FROM dev_edw.audit_history_hb 
    WHERE script_name LIKE '%0_hive_d%' 
      AND parent_audit_id is null 
    ORDER BY start_dttm desc