将日期字符串转换为时间戳,现在无法在Hive中执行时间戳数学运算

时间:2017-11-07 03:33:07

标签: datetime hive

我有一个hive表如下:

incident_id      string
incident_time    timestamp
call_id          string 
call_time        timestamp 

我最初使用

从字符串转换了时间戳值
cast(from_unixtime(unix_timestamp(incident_time, 'yyyy-MM-dd hh:mm:ss')) as timestamp) as incident_time 

我做了一个快速选择*他们看起来都很好。我正在尝试查找哪些记录在call_time之前1小时之间到48小时之后有一个incident_time。我的疑问是:

select * from mydb.mytable where 
(incident_time >= call_time-3600) and  
(incident_time <= call_time+172800);

抛出错误失败,异常java.io.IOException:java.lang.RuntimeException:Hive 2内部错误:类型不支持的转换:interval_day_time

1 个答案:

答案 0 :(得分:0)

我通过使用hive中的datediff函数解决了这个问题。

select distinct * 
from 
mydb.mytable  
where 
datediff(incident_time, call_time) <= 1;

https://issues.apache.org/jira/browse/HIVE-12729

找到答案