直接说实现:
LATERAL VIEW posexplode(split(space(INT(FLOOR(MONTHS_BETWEEN(结束时间,开始时间)))),' ')) tf as pos,val
样例:结束时间="2023-05-01" ,开始时间="2023-01-01"
查询:
select
substr(months_add(start_time,pos),1,7) as month
from (
select
'2023-01-01' as start_time
'2023-05-01' as end_time
from table
)t1
LATERAL VIEW posexplode(split(space(INT(FLOOR(MONTHS_BETWEEN(end_time,start_time)))),' ')) tf as pos,val
结果:
month
2023-01
2023-02
2023-03
2023-04
2023-05