如何在 Hive 中获取 to_epoch(sysdate-90)

how to get to_epoch(sysdate-90) in Hive

我有一个在 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.example 中有 LAST_ACCESSED 库伦 LAST_ACCEESSED 的值是:1.554386487E9,不确定这是什么值,我猜这可能是几秒钟。

尝试过:

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

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

看来1.554386487E9是用double存储的同一个unix纪元时间,用工程符号显示,可以转成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'))