Impala 获得 2 个日期之间的差异,不包括周末

Posted

技术标签:

【中文标题】Impala 获得 2 个日期之间的差异,不包括周末【英文标题】:Impala get the difference between 2 dates excluding weekends 【发布时间】:2020-09-02 20:57:06 【问题描述】:

我正在尝试获取 Impala 中两个日期之间的天差,但我需要排除周末。

我知道它应该是这样的,但我不确定周末会怎样......

DATEDIFF(resolution_date,created_date)

谢谢!

【问题讨论】:

【参考方案1】:

这种任务的一种方法是枚举范围内的每一天,然后在计数之前过滤掉周末。

一些数据库具有生成日期序列的特定功能,而在其他数据库中提供递归公共表表达式。 Impala 不支持递归查询,因此我们需要寻找替代解决方案。

如果您有一个表的行数至少与某个范围内的最大天数一样多,您可以使用row_number() 来偏移开始日期,然后使用条件聚合来计算工作日。

假设您的表名为mytable,以列id 作为主键,并且大表名为bigtable,您会这样做:

select 
    t.id, 
    sum(
        case when dayofweek(dateadd(t.created_date, n.rn)) between 2 and 6 
        then 1 else 0 end
    ) no_days
from mytable t
inner join (select row_number() over(order by 1) - 1 rn from bigtable) n
    on t.resolution_date > dateadd(t.created_date, n.rn)
group by id

【讨论】:

太棒了!这正是我想要的,非常感谢! 对不起,我不明白什么是bigtable?我有一张表,两列中有日期,我想找出两者之间的日期差异,不包括周末。

以上是关于Impala 获得 2 个日期之间的差异,不包括周末的主要内容,如果未能解决你的问题,请参考以下文章

周、月、季度和年的 Impala 日期

以周、月、季度和年的形式获取日期之间的差异

没有闰日的两个日期之间的差异

如何在 android 中获得两个日期之间的差异?,尝试所有事情并发布

在 xslt 中查找 2 个日期之间的差异

NLP 如何获得 2 个文档之间的差异