sql—计算间隔中的日期数

1rhkuytd  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(274)

我正在尝试编写一个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年里。
现在我希望当一个假日介于“deliverydate”和“performance date”之间时,新的performancedate(例如,新变量不需要是同一个变量)会在该期间内的每个假日再移动一天。
我希望有这样的解决办法 ..when '18.07.2020' between performancedate and deliverydate then '1' else '0'" 然后就可以使用 Sum(newvariable) 结合 group by 并将其添加到以前的演出日期。这只是一个可能的解决办法。
(附言:我对sql程序的功能非常有限,因为它只是我们商品管理中的一个sql菜单。 select 等工程……)

nnt7mjpx

nnt7mjpx1#

你的问题很难理解。基于标题:
数一数中间有多少个日期
如果需要两个日期之间的公共假日数,则一个选项是相关子查询:

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;

不过,我怀疑,你想在未来某个时候计算一个日期,把假期考虑进去。如果是这样的话,我建议你提出一个新问题,提供样本数据,期望的结果,并试图对你想要完成的事情有一个更清晰的解释。

相关问题