2016-01-13 175 views
0

我的要求是简单的如何在蜂巢计算两个栏之间的时间差蜂巢:如何计算时间差

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)我希望你应该在蜂巢percpective – Elavarasan

+0

看看这个[答案]参见(http://stackoverflow.com/a/4927884/4038957)。 –

+0

是的,但同样是从蜂巢的角度来问。如果我写的Java单独获得这个时间差,我的代码会去过多复杂.... – Elavarasan

2

Language manual包含了所有可用的日期时间函数描述。以秒为单位的差值可以用这种方式计算: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