2017-03-03 74 views
1

当前我正在按会话ID(行)计算两个时间戳(YYYY-MM-DD HH:MM:SS)的差异。一旦我能够得到这些信息,我就会加入一个日期表并平均时间来获得一个特定的数字。 我正在寻找一种方法将数字(例如4.5)转换为00:04:30(4分30秒)的时间。
我不想包含任何日期功能,因此此代码将排除'YYYY-MM-DD'格式。将数字转换为hiveql中的时间

这里是我使用的逻辑:

select t_date_dim.greg_dt, 
    avg(Big.Session_Length) as Session_Length 
from (
    select unix_timestamp(Big.MaximumTimestamp) - unix_timestamp(Big.MinimumTimestamp) as Session_Length 
    from Big 
    ) 
inner join t_date_dim on big.dt = t_date_dim.greg_dt 
+0

P.s.该查询无效。 –

+0

我试图减少查询以严格达到我的问题的基础。我注意到我的命名约定是不正确的。我很抱歉。 – MParisian

回答

0
hive> with t as (select 1234 as session_length) -- in seconds 
     select printf("%02d:%02d", session_length div 60,session_length % 60) 
     from t 
     ; 
OK 
_c0 
20:34 

+0

我以前没见过Hive中的“printf”函数。它是什么,它是如何工作的? – MParisian

+0

@MParisian - 查看我在回答中添加的链接 –

+0

亲切的提醒接受答案 –