如何在 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'))
我有一个在 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'))