【发布时间】:2014-11-19 18:36:01
【问题描述】:
在 SQL Server 中,我想将 x 个工作日添加到一个日期,但还要传入一周中的工作日数。即可能是 5,6 ,7。
我在处理 5 天的堆栈溢出时发现了此问题,但不知道如何修改它,以便您可以指定每周的工作日数。
CREATE FUNCTION[dbo].[AddBusinessDays]
(@Date date, @n INT)
RETURNS DATE AS
BEGIN
DECLARE @d INT;
SET @d = 4 - SIGN(@n) * (4-DATEPART(DW, @Date));
RETURN DATEADD(D, @n + ((ABS(@n) + @d - 2) / 5) * 2 * SIGN(@n) - @d / 7, @Date);
END
【问题讨论】:
-
请检查我的回答。
-
此时您可能需要考虑创建一个日历表 - 每天一行,您说的少于 4000 行以涵盖接下来的十年 - 然后您可以有列对于对您的组织很重要的日期特征(例如特定日期是否算作工作日)。有了日历表后,编写查询以查找例如下一个工作日或在日期上添加 x 个工作日往往很容易。
标签: sql sql-server tsql date