请提供配置单元查询,以'yyyy-mm-dd'
格式返回3年中每个月的最后日期。
答案 0 :(得分:0)
在此示例中,将开始日期和结束日期替换为您的日期。工作原理:space
函数生成一个长度为datediff()
函数返回的天数的字符串,按空格分割创建一个数组,posexplode爆炸一个数组,返回元素在数组中的位置,对应于天数。然后date_add('$ {hivevar:start_date}',si)返回每天的日期,lest_day()
函数(自1.1版本以来在Hive中存在)将每个日期转换为最后一天(此处需要distinct
) 。运行此示例:
set hivevar:start_date=2015-07-01;
set hivevar:end_date=current_date;
select distinct last_day(date_add ('${hivevar:start_date}',s.i)) as last_date
from ( select posexplode(split(space(datediff(${hivevar:end_date},'${hivevar:start_date}')),' ')) as (i,x)
) s
order by last_date
;
输出:
OK
2015-07-31
2015-08-31
2015-09-30
2015-10-31
2015-11-30
2015-12-31
2016-01-31
2016-02-29
2016-03-31
2016-04-30
2016-05-31
2016-06-30
2016-07-31
2016-08-31
2016-09-30
2016-10-31
2016-11-30
2016-12-31
2017-01-31
2017-02-28
2017-03-31
2017-04-30
2017-05-31
2017-06-30
2017-07-31
2017-08-31
2017-09-30
2017-10-31
2017-11-30
2017-12-31
2018-01-31
2018-02-28
2018-03-31
2018-04-30
2018-05-31
2018-06-30
2018-07-31
Time taken: 71.581 seconds, Fetched: 37 row(s)