hive中怎么获取每周,每月,每半年第一天和最后一天

每周第一天,最后一天

--每个自然周第一天
set hivevar:swfdt=date_add('${hivevar:sdt}',1 - case when dayofweek('${hivevar:sdt}') = 1 then 7 else dayofweek('${hivevar:sdt}') - 1 end);
set hivevar:wfdt=regexp_replace(${hivevar:swfdt},'-','');
select ${hivevar:wfdt};
select ${hivevar:swfdt};

--每个自然周最后一天
set hivevar:swldt=date_add('${hivevar:sdt}',7 - case when dayofweek('${hivevar:sdt}') = 1 then 7 else dayofweek('${hivevar:sdt}') - 1 end);
set hivevar:wldt=regexp_replace(${hivevar:swldt},'-','');
select ${hivevar:wldt};
select ${hivevar:swldt};

--获取当月第一天
set hivevar:smfdt=trunc('${hivevar:sdt}','MM');
set hivevar:mfdt=regexp_replace(${hivevar:smfdt},'-','');
select ${hivevar:mfdt};
select ${hivevar:smfdt};

--获取当月最后一天
set hivevar:smldt=last_day('${hivevar:sdt}');
set hivevar:mldt=regexp_replace(${hivevar:smldt},'-','');
select ${hivevar:mldt};
select ${hivevar:smldt};

--获取半年第一天
set hivevar:shyfdt=concat(year('${hivevar:sdt}'),'-',case when month('${hivevar:sdt}') between 1 and 6 then '01-01' else '07-01' end);
set hivevar:hyfdt=concat(year('${hivevar:sdt}'),case when month('${hivevar:sdt}') between 1 and 6 then '0101' else '0701' end);
select ${hivevar:shyfdt};
select ${hivevar:hyfdt};

--获取半年最后一天
set hivevar:shyldt=concat(year('${hivevar:sdt}'),'-',case when month('${hivevar:sdt}') between 1 and 6 then '06-30' else '12-31' end);
set hivevar:hyldt=concat(year('${hivevar:sdt}'),case when month('${hivevar:sdt}') between 1 and 6 then '0630' else '1231' end);
select ${hivevar:shyldt};
select ${hivevar:hyldt};
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值