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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值