蜂巢中两个时间戳数据与纳秒之间的差异

时间:2018-11-08 08:07:55

标签: hive timestamp hiveql sql-timestamp

我有2列时间戳数据(最高可达纳秒),它们来自事务日志文件。我想找出时间差异,以纳秒为单位。我试图通过将列数据转换为时间戳来直接减去列数据,但这样做会出现多个错误。在Hive中有什么方法可以做到这一点。

Request_Time Response_Time 2018-11-08 12:24:24.123456345 2018-11-09 12:24:24.123556567 2018-11-08 23:59:59.234123678 2018-11-09 00:00:00.342567456 2018-11-08 12:24:24.678345345 2018-11-09 01:02:03.688456678 2018-11-08 12:24:24.789456234 2018-11-08 12:24:24.799455567

我想找到区别是(Response_Time-Request_Time)。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

我认为没有直接的方法可以做到这一点,

您可以做的是将时间戳转换为unix时间戳,然后得到差值,但是,这只会使您差到几秒钟,而不是几秒钟。

但是,以下将。

SELECT (unix_timestamp("2018-11-09 12:24:25.123556567")+cast(split("2018-11-09 12:24:25.123556568","\\.")[1]*0.0000000010 as decimal (12, 12)))
-
(unix_timestamp("2018-11-09 12:24:25.123556567")+cast(split("2018-11-09 12:24:25.123556567","\\.")[1]*0.0000000010 as decimal (12, 12)) )
from temp.test_time

差异将采用以下格式

  

unix_timestamp.nano_seconds

对于表格

SELECT *,(unix_timestamp(time1)+cast(split(time1,"\\.")[1]*0.0000000010 as decimal (12, 12))) - 
(unix_timestamp(time)+cast(split(time,"\\.")[1]*0.0000000010 as decimal (12, 12)))
from temp.test_time