我已经看到许多关于如何创建一个 SQL Server 函数的帖子,该函数将给一个日期添加给定的工作日数。但是,他们都没有完全按照我需要的方式计算。我们有一个当前在代码中完成的函数,但我想转移到本机 SQL Server 函数(供存储过程和查询中使用)。在我们开始评估仓储费用之前,我们会给客户 5 个工作日来收集货物。5 个工作日不包括周末和节假日(我们有一个包含节假日日期的表格)。这里的诀窍是我需要在 5 个工作日后立即获取日期,无论是周末还是节假日。所以我需要这个函数来返回最后一个工作日,而不是之后的第一个工作日。因此,例如:
Oct 20th (Sat) plus 5 working days = Oct 26th (Fri)
Oct 21st (Sun) plus 5 working days = Oct 26th (Fri)
Oct 22nd (Mon) plus 5 working days = Oct 29th (Mon)
May 19th (Sat) plus 5 working days with May 21st a holiday = May 28th
5 个工作日是当前的分配,但将来可能会改变,因此需要将工作日数作为参数。此外,该函数可用于相当大的数据集,因此我更喜欢在没有循环的情况下执行此操作。我们正在运行 SQL Server 2008。
编辑:这不是“在没有循环的 SQL 中添加迄今为止的工作日”的副本,因为他们希望结束日期是工作日。我希望我的结束日期是紧随最后宽限日之后的任何日期(即:周一至周五的 5 个工作日我希望返回周六日期,而不是下一个周一)。