Hive 蜂巢获取当月的第一个工作日

Hive 蜂巢获取当月的第一个工作日,hive,hiveql,Hive,Hiveql,早上好, 标题说明了一切。我一辈子都不知道如何在HQL中获取当月(或上个月等)的第一个工作日 因此,如果要评估今天的日期,它应该返回2020年2月3日作为日期,因为3日是本月的第一个工作日 case when date_format(date_add(current_date, 1 - day(current_date)),'u')> 5 then to_date(mydate)= to_date(date_add(date_add(current_date, 1 - day(curr

早上好, 标题说明了一切。我一辈子都不知道如何在HQL中获取当月(或上个月等)的第一个工作日


因此,如果要评估今天的日期,它应该返回2020年2月3日作为日期,因为3日是本月的第一个工作日

case when date_format(date_add(current_date, 1 - day(current_date)),'u')> 5 then  
to_date(mydate)= to_date(date_add(date_add(current_date, 1 - day(current_date)),8-cast(date_format(date_add(current_date, 1 - day(current_date)),'u') as int)%8))
    else to_date(mydate) = date_add(current_date, 1 - day(current_date)) end
我尝试使用case语句来计算一个月的第一天,如果是星期六,则添加2天,如果是星期天,则添加1,但它不起作用,我收到以下错误:错误:准备错误:org.apache.hive.service.cli.HiveSQLException:编译语句时出错:失败:ParseException行 1:452外部输入,“预期功率随后接近”行1:626外部输入,“预期功率随后接近”

请帮忙

@瓦姆西·普拉巴拉

我尝试了这个,但是我得到了1的结果。我需要返回一个日期,特别是本月的2020年2月3日

case when date_format(date_add(current_date, 1 - day(current_date)),'u')> 5 then  
to_date(mydate)= to_date(date_add(date_add(current_date, 1 - day(current_date)),8-cast(date_format(date_add(current_date, 1 - day(current_date)),'u') as int)%8))
    else to_date(mydate) = date_add(current_date, 1 - day(current_date)) end

一种选择是获取月份的第一天,如果月份的第一天是周末,则添加天数。默认情况下,工作日
1=星期一,2=星期二。。。6=周六,7=周日

select dt
      ,case when date_format(first_day_in_month,'u') > 5 
            then date_add(first_day_in_month,8-cast(date_format(first_day_in_month,'u') as int))
       else first_day_in_month end as first_week_day
from (select dt
            ,date_sub(dt,cast(date_format(dt,'d') as int)-1) as first_day_in_month
      from tbl 
     ) t 
;

请注意,
date\u格式
功能在Hive 1.2.0及以上版本中工作。

前面的文章是否有帮助?我已经能够通过以下内容确定一周中的哪一天:;当date_格式(当前日期,'u')=1(1=周一,2=周二等)时,我不知道如何合并它来确定这是否是一个月的第一个工作日。因此,如果要评估今天的日期,它应该返回2/3/2020作为日期,因为第三个是本月的第一个工作日。这有意义吗?啊,现在我明白了。对不起,是我的错。不幸的是,我没有真正的想法,如何在蜂箱中确定。我在原始帖子中尝试了类似的方法。我只是尝试了你建议的一个变体,但收到了一个新的错误。如上所示。想法?我需要最终结果来返回dateBump。还有其他想法吗?