本文主要是介绍Hive-之posexplode函数查询startDate~endDate之间的所有日期,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Hive-之posexplode
函数实现查询startDate~endDate之间的所有日期
- 需求:目前需要动态找到 20200603~20200607之间的所有日期
-- 初始数据集
SET hive.exec.mode.local.auto=true;
WITH temp1 AS (
select 'name1' as uid,'2020-06-03' as start_date, '2020-06-07' as end_date
UNION ALL
select 'name2' as uid,'2020-05-03' as start_date, '2020-05-12' as end_date
)-- 查询SQL
SELECT
*,
t.pos,
DATE_ADD(start_date,t.pos) AS real_shengxiao_time
FROM temp1
LATERAL VIEW POSEXPLODE(SPLIT(SPACE(datediff(end_date,start_date)),'')) t AS pos,empty_string
- 查询结果如下:
uid start_date end_date pos empty_string pos real_shengxiao_time
name1 2020-06-03 2020-06-07 0 0 2020-06-03
name1 2020-06-03 2020-06-07 1 1 2020-06-04
name1 2020-06-03 2020-06-07 2 2 2020-06-05
name1 2020-06-03 2020-06-07 3 3 2020-06-06
name1 2020-06-03 2020-06-07 4 4 2020-06-07
name2 2020-05-03 2020-05-12 0 0 2020-05-03
name2 2020-05-03 2020-05-12 1 1 2020-05-04
name2 2020-05-03 2020-05-12 2 2 2020-05-05
name2 2020-05-03 2020-05-12 3 3 2020-05-06
name2 2020-05-03 2020-05-12 4 4 2020-05-07
name2 2020-05-03 2020-05-12 5 5 2020-05-08
name2 2020-05-03 2020-05-12 6 6 2020-05-09
name2 2020-05-03 2020-05-12 7 7 2020-05-10
name2 2020-05-03 2020-05-12 8 8 2020-05-11
name2 2020-05-03 2020-05-12 9 9 2020-05-12
这篇关于Hive-之posexplode函数查询startDate~endDate之间的所有日期的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!