如何在hive中访问\u epoch(sysdate-90)

6rvt4ljy  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(349)

我有一个在oracle中运行良好的查询,但是我想在hive中使用相同的查询。
查询:

select count(mem_id)  
from mem 
where cobrand_id = '10001372' 
and user_type_id =1  
and status_ind <>3 
and LAST_ACCESSED >= to_epoch(sysdate-90);

另外,我在double中有last\u accessed coulmn。last\u accessed的示例值为: 1.554386487E9 ,不确定这是什么值,我猜可能是秒。
尝试:

UNIX_TIMESTAMP( string date, string pattern )
FROM_UNIXTIME( bigint number_of_seconds  [, string format] )

运气不好。有人能帮我吗。提前谢谢。

2lpgd968

2lpgd9681#

似乎1.554386487e9是以double存储的unix epoch时间,以工程符号显示,并且可以转换为bigint。
检查您的示例:

select from_unixtime(cast(1.554386487E9 as bigint));
OK
2019-04-04 07:01:27

这个时间戳好看吗?
如果是,则使用 unix_timestamp(concat(date_sub(current_date,90),' 00:00:00')) 获取当前日期的纪元时间-90天。
您的查询已修复:

select count(mem_id)  
from mem 
where cobrand_id = '10001372' 
and user_type_id =1  
and status_ind <>3 
and cast(LAST_ACCESSED as BIGINT) >=  unix_timestamp(concat(date_sub(current_date,90),' 00:00:00'))

相关问题