我仍在学习SQL,并且在SQL Server或Postgre袆上找到了几个解决方案,但是在HUE上却看不到它 DATEDIFF,只能让我计算天秒数之间的差,而分钟数不可用。非常欢迎您的帮助。
DATEDIFF
我可以用来分割时间戳substring_index,但是后来我找不到正确的方法来比较start_time并将其减去end_time以获得准确的秒数。我找不到时间函数,所以我假设我应该根据时间戳进行计算。获得为
substring_index
from_unixtime(unix_timestamp(start_time, "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"), 'yyyy-MM-dd HH:mm:ss') substring_index(start_time, 'T', -1)s_tm, substring_index(end_time, 'T', -1)e_tm start_date 2018-06-19 13:59:41 end_date 2018-06-19 14:01:17
期望的输出
01:36
Hive解决方案。
差异(以秒为单位):
select UNIX_TIMESTAMP('2018-06-19T14:01:17.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS")- UNIX_TIMESTAMP('2018-06-19T13:59:41.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS") as seconds_diff
结果:
96
现在计算HH:mm:ss的差:
select concat_ws(':',lpad(floor(seconds_diff/3600),2,'0'), --HH lpad(floor(seconds_diff%3600/60),2,'0'), --mm lpad(floor(seconds_diff%3600%60),2,'0') --ss ) from ( select --calculate seconds difference UNIX_TIMESTAMP('2018-06-19T14:01:17.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS")- UNIX_TIMESTAMP('2018-06-19T13:59:41.000000',"yyyy-MM-dd'T'HH:mm:ss.SSSSSS") as seconds_diff ) s
OK 00:01:36 Time taken: 1.071 seconds, Fetched: 1 row(s)
另请参阅有关格式转换的以下答案:https : //stackoverflow.com/a/23520257/2700344