Hive 通过查询确定配置单元中两个时间戳之间的差异
我有一个包含以下列的配置单元表Hive 通过查询确定配置单元中两个时间戳之间的差异,hive,hiveql,cloudera-cdh,Hive,Hiveql,Cloudera Cdh,我有一个包含以下列的配置单元表 session Timestamp 1 2018-05-18T00:00:00.000Z 1 2018-05-18T00:01:00.000Z 1 2018-05-18T00:02:00.000Z 1 2018-05-18T00:03:00.000Z 2 2018-05-18T00:05:00.000Z
session Timestamp
1 2018-05-18T00:00:00.000Z
1 2018-05-18T00:01:00.000Z
1 2018-05-18T00:02:00.000Z
1 2018-05-18T00:03:00.000Z
2 2018-05-18T00:05:00.000Z
2 2018-05-18T00:10:00.000Z
2 2018-05-18T00:15:00.000Z
对于每个会话,我想找出第一个时间戳和最后一个时间戳之间的差异,以秒为单位
因此,我的输出将如下
session Period
1 180
2 600
第一个差异,180(秒)=2018-05-18T00:03:00.000Z-2018-05-18T00:00:00.000Z
第二个差异,600(秒)=2018-05-18T00:15:00.000Z-2018-05-18T00:05:00.000Z
会话和时间戳都是字符串
我试图使用此命令将字符串时间戳转换为unix时间戳,但没有成功
select from_unixtime(unix_timestamp(Timestamp, "yyyy-MM-dd'T'HH:mm:ss.SSSZ")) AS NEW_TIMESTAMP from TBL;
unix_timestamp将字符串转换为时间戳(秒),因此您只需使用此函数并从最大值中减去最小值:
select
max(unix_timestamp(Timestamp, "yyyy-MM-dd'T'HH:mm:ss.SSSZ"))
-
min(unix_timestamp(Timestamp, "yyyy-MM-dd'T'HH:mm:ss.SSSZ"))
from TBL
group by session_id