SQL/配置单元-动态日期范围-今天日期之前的半个月

x4shl7ld  于 2022-10-21  发布在  Hive
关注(0)|答案(1)|浏览(156)

我想为我的配置单元查询设置动态日期参数。我想要今天之前已经过去的半个月。我怎么能做到这一点?我不确定我是否能在SET hivevar:中做case when

if current_date = '2022-10-04', then I want to set start_dt = '2020-09-16' and end_dt = '2020-09-30'
if current_date = '2022-03-04', then I want to set start_dt = '2020-02-16' and end_dt = '2020-02-28'
if current_date = '2022-10-16', then I want to set start_dt = '2020-10-01' and end_dt = '2020-10-15'
5m1hhzi4

5m1hhzi41#

您不需要设置动态参数。如果你可以很容易地实现它,那就使用它。
对于每种情况,您可以使用Year()、Month()、Add_Month()函数计算它们。To_Date可用于转换为日期。请在下面测试一下SQL并让我知道。
开始日期的逻辑是-如果币种日期<16,则使用上个月的16日,否则使用币种月份的第一天。同样地,也计算结束DT。

select
to_date(
if (day(current_date())<16, concat(year(add_months(current_date(),-1)),'-',month(add_months(current_date(),-1)),'-','16'),
concat(year(current_date()),'-',month(current_date()),'-','01')
)
) as star_dt,

if (day(current_date())<16, 
last_day(add_months(current_date(),-1)),
to_date(
concat(year(current_date()),'-',month(current_date()),'-','15')
)
) as end_dt

请测试一下SQLS。如果您遇到问题,请将yearmonth输出与cast(... as string)一起附上。

相关问题