繁体   English   中英

计算有多少日期落入间隔

[英]Count how many dates fall into the between interval

我正在尝试编写一个 SQL 来计算我们公司的“执行日期”。

为了感受一下,我写了 SQL 的摘录:

..CASE
     WHEN EXTRACT(weekday FROM deliverydate) = 1 THEN (bek.deliverydate-3)
     WHEN EXTRACT(weekday FROM deliverydate) = 2 THEN (bek.deliverydate-3)
    ELSE
    bek.deliverydate-2 
    END AS performancedate

这工作得很好。 (周末将演出日提前一天,因为送货需要多一天)

我接下来尝试的是实施“公共假期”,其中“表演日期”在每个公共假期多一天移动。

我的英语不是那么好,所以我希望你能理解这么多。

我把所有的公共假期都整理好了:

'01.01.2020'
'10.04.2020'
'13.04.2020'
'01.05.2020'
'21.05.2020'
'01.06.2020'
'11.06.2020'
'03.10.2020'
'01.11.2020'
'25.12.2020'
'26.12.2020'
'01.01.2021'
'02.04.2021'
'05.04.2021'
'01.05.2021'
'13.05.2021'
'24.05.2021'
'03.06.2021'
'03.10.2021'
'01.11.2021'
'25.12.2021'
'26.12.2021'
'01.01.2022'
'15.04.2022'
'18.04.2022'
'01.05.2022'
'26.05.2022'
'06.06.2022'
'16.06.2022'
'03.10.2022'
'01.11.2022'
'25.12.2022'
'26.12.2022'

在接下来的~2年。

现在我希望当假期位于“交货日期”和“绩效日期”之间时,的绩效日期(例如,新变量,它不需要是同一个变量)在每个假期再移动一天落入时期。

我希望有像这样的解决方案

..when '18.07.2020' between performancedate and deliverydate then '1' else '0'"

然后可以将Sum(newvariable)group by结合使用,并将其添加到以前的执行日期。 这只是一个可能的解决方案。

(PS:我对SQL程序的功能非常有限,因为它只是我们商品管理中的一个SQL菜单select等工作......)

你的问题很难理解。 根据标题:

计算有多少日期落入间隔

如果您想要两个日期之间的公共假期数,那么一个选项是相关子查询:

select t.*,
       (select count(*)
        from holidays h
        where h.holiday_date >= t.performance_date and
              h.holiday_date <= t.delivery_date
       ) as num_holidays_between
from t;

不过,我怀疑您想在考虑假期的情况下计算未来某个时间的日期。 如果是这种情况,我建议您提出一个问题,提供样本数据、期望的结果,并尝试更清楚地解释您想要完成的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM