首页 > 解决方案 > 如果日期是周末或银行假日,则调整日期

问题描述

我有一个查询,它从临时表 myTblTemp 将一些新记录插入到表 myTbl 中。

在查询中,如果日期是星期六或星期日,我会调整“AnnDate”字段之一。但是,如果日期是银行假日,我还需要调整 AnnDate。

我有一张桌子, tblBankHoliday 列出了所有需要的即将到来的银行假期。如果在 tblBankHoliday 中找到 AnnDate,我该如何调整我的查询(或者我是否需要一个单独的查询)以增加一天的日期?

我当前的查询

insert into myTbl(AnnDate, USDVal)
case DATENAME(WEEKDAY, AnnDate) 
       when 'Saturday' 
       then DATEADD(DD, 2, AnnDate) 
       when 'Sunday' 
       then DATEADD(DD, 1, AnnDate) 
       else AnnDate 
end
from myTblTemp

标签: sqlsql-server

解决方案


制作一张桌子,例如thedays。将相关期间的所有日期插入其中。例如在一列theday中。在另一列中,例如isworkday用 1 标记工作日,用 0 标记非工作日。

然后,您可以在查询中选择给定日期或之后的下一个工作日。

insert into myTbl(AnnDate, USDVal)
(SELECT min(theday)
        FROM thedays
        WHERE theday >= AnnDate
              AND theday.isworkday = 1)
...
from myTblTemp

推荐阅读