如何使用start\u date变量创建一年中所有日期的表?

carvr3hs  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(258)

我想用hql创建一个包含一年中所有日子的表。我已经尝试过这种方法:
从日期范围生成天数
但是hql与sql有点不同,最好的方法是什么?
使用pl/hql还是使用bash脚本并导入?
预期结果:

start_date = 2017-02-14;

| date     |
|2017-02-14|
|2017-02-13|
|2017-02-12|
|2017-02-11|
|2017-02-10|
|2017-02-09|
|2017-02-08|
|2017-02-07|
....

谢谢

ipakzgxi

ipakzgxi1#

使用 bash 以及更早的测试开始日期:

start_date="2014-02-14"
days=$((($(date -u +%s) - $(date -ud $start_date +%s))/60/60/24))
(( day_end = 366 + days ))

while (( days < day_end  ));do
  date "+%Y-%m-%d" -d "$days days ago"
  (( days++ ))
done

结果

2014-02-14
2014-02-13
2014-02-12
2014-02-11
2014-02-10
2014-02-09
2014-02-08
2014-02-07
2014-02-06
2014-02-05
2014-02-04
...
...
...
2013-02-21
2013-02-20
2013-02-19
2013-02-18
2013-02-17
2013-02-16
2013-02-15
2013-02-14
o2rvlv0m

o2rvlv0m2#

set start_date=2017-02-14;

select  date_sub('${hiveconf:start_date}',i)
from    (select 1 as n) dummy lateral view posexplode(split(space(364),' ')) p as i,x
;
2017-02-14
2017-02-13
2017-02-12
2017-02-11
2017-02-10
.
.
.
2016-02-20
2016-02-19
2016-02-18
2016-02-17
2016-02-16

相关问题