Sql 两个日期字段之间的时间差

Sql 两个日期字段之间的时间差,sql,hive,timestamp,hiveql,Sql,Hive,Timestamp,Hiveql,我有一个字符串格式的日期字段名“dts”。我想根据时间差(以小时为单位)找出所有记录。运行事件时间应大于或等于eat事件 输出应为: 将时间戳转换为秒,然后减去,将结果除以3600得到小时,使用case+count按范围计数,如下所示: select count(case when diff_hrs >24 then 1 end) as more_24, count(case when diff_hrs <=24 then 1 end) as less_than_24

我有一个字符串格式的日期字段名“dts”。我想根据时间差(以小时为单位)找出所有记录。运行事件时间应大于或等于eat事件

输出应为:


将时间戳转换为秒,然后减去,将结果除以3600得到小时,使用case+count按范围计数,如下所示:

select count(case when diff_hrs >24 then 1 end) as more_24,
       count(case when diff_hrs <=24 then 1 end) as less_than_24,
       ...
       count(case when diff_hrs >=2 and diff_hrs <=3 then 1 end) as hrs_2_to_3,
       ...
from
(
select
abs(unix_timestamp(dts) - unix_timestamp(dts-eat)))/60/60 as diff_hrs
from table
)s;
选择count(当差异小时数>24时,则为1结束)作为more\u 24,

计数(如果差异小时数=2,请提供所需的差异小时数output@leftjoin-更新:)如果其中一个日期字段带有T和Z(2016-05-05T13:37:30Z),而另一个没有(2016-05-06 13:37:30.0),该怎么办。unix\u时间戳还能工作吗?转换如下日期:
from\u unixtime(unix\u时间戳(“2017-01-01T05:01:10Z”、“yyyy-MM-dd'HH:MM:ss'Z”),“yyyy-MM-dd HH:MM:ss”)
返回
2017-01-01 05:01:10
from\u unixtime(unix\u时间戳(列名,“yyyyy-MM-dd'T'HH:MM:ss'Z”),“yyyyyyy-MM-dd HH:ss”)-这会以相同的格式返回一列中的所有内容吗?从\u unixtime(unix\u时间戳(“2017-01-01T05:01:10Z”,“yyyy-MM-dd'HH:MM:ss'Z”),“yyyy-MM-dd-HH:MM:ss'”,“yyyy-MM-dd-HH:MM:ss”)-这也是从\u unixtime(unix\u时间戳(“2017-01-01T05:01:10Z”,“yyyyyy-MM-dd'HH:MM:ss'Z')-返回空值