Java 日期递增的配置单元自定义项

Java 日期递增的配置单元自定义项,java,hive,hiveql,user-defined-functions,unix-timestamp,Java,Hive,Hiveql,User Defined Functions,Unix Timestamp,我正在尝试编写一个用户定义的函数,该函数允许您输入日期(当前_日期)和范围,查询将返回以下日期以及经过的日期数。例如,若给定当前日期,查询将返回当前日期-0天,下一天-1天。 我一直在尝试不同的日期类型(unixtimestap、date、jodatime、localdatetime)。我放弃了以前的代码,真的只是希望对问题有一些了解,减少代码。您可以使用纯配置单元查询: set hivevar:start_date=2019-01-02; set hivevar:end_date=2019-

我正在尝试编写一个用户定义的函数,该函数允许您输入日期(当前_日期)和范围,查询将返回以下日期以及经过的日期数。例如,若给定当前日期,查询将返回当前日期-0天,下一天-1天。
我一直在尝试不同的日期类型(unixtimestap、date、jodatime、localdatetime)。我放弃了以前的代码,真的只是希望对问题有一些了解,减少代码。

您可以使用纯配置单元查询:

set hivevar:start_date=2019-01-02; 
set hivevar:end_date=2019-01-31;  

with date_range as 
(--this query generates date range
select date_add ('${hivevar:start_date}',s.i) as dt, s.i days
  from ( select posexplode(split(space(datediff('${hivevar:end_date}','${hivevar:start_date}')),' ')) as (i,x) ) s
)

select dt, days from date_range; 
返回:

dt  days    
2019-01-02  0   
2019-01-03  1   
2019-01-04  2   
2019-01-05  3   
2019-01-06  4   
2019-01-07  5   
2019-01-08  6   
2019-01-09  7   
2019-01-10  8   
2019-01-11  9   
2019-01-12  10  
2019-01-13  11  
2019-01-14  12  
2019-01-15  13  
2019-01-16  14  
2019-01-17  15  
2019-01-18  16  
2019-01-19  17  
2019-01-20  18  
2019-01-21  19  
2019-01-22  20  
2019-01-23  21  
2019-01-24  22  
2019-01-25  23  
2019-01-26  24  
2019-01-27  25  
2019-01-28  26  
2019-01-29  27  
2019-01-30  28  
2019-01-31  29  

希望您能理解。

您可以使用纯蜂巢查询:

set hivevar:start_date=2019-01-02; 
set hivevar:end_date=2019-01-31;  

with date_range as 
(--this query generates date range
select date_add ('${hivevar:start_date}',s.i) as dt, s.i days
  from ( select posexplode(split(space(datediff('${hivevar:end_date}','${hivevar:start_date}')),' ')) as (i,x) ) s
)

select dt, days from date_range; 
返回:

dt  days    
2019-01-02  0   
2019-01-03  1   
2019-01-04  2   
2019-01-05  3   
2019-01-06  4   
2019-01-07  5   
2019-01-08  6   
2019-01-09  7   
2019-01-10  8   
2019-01-11  9   
2019-01-12  10  
2019-01-13  11  
2019-01-14  12  
2019-01-15  13  
2019-01-16  14  
2019-01-17  15  
2019-01-18  16  
2019-01-19  17  
2019-01-20  18  
2019-01-21  19  
2019-01-22  20  
2019-01-23  21  
2019-01-24  22  
2019-01-25  23  
2019-01-26  24  
2019-01-27  25  
2019-01-28  26  
2019-01-29  27  
2019-01-30  28  
2019-01-31  29  

希望您能理解。

也许在这种情况下,共享您的一些代码实际上可以帮助您。我认为这并不难。在任何情况下,它都是你想要使用的类。也许在这种情况下,共享一些代码实际上可以帮助你。有了它,我不认为这应该太难。在任何情况下,它都是您想要使用的类。这非常有效,我仍然需要为我的问题配置它,但它做了需要的事情。非常感谢您的帮助。这非常有效,我仍然需要为我的问题配置它,但它做了需要的事情。非常感谢你的帮助。