将 x 个工作日添加到 SQL 服务器中的日期?
Adding x work days onto a date in SQL Server?
如果有一种简单的方法可以做到这一点,我有点困惑。
我的数据 table 中有一个名为 receipt_date 的字段,我希望为此添加 10 个工作日(包括银行假日)。
我不确定是否有任何类型的查询可以用来从我的原始查询加入到这个 table 中来计算 10 个工作日,我已经尝试了一些子查询但是我无法正确处理,或者可能无法执行此操作。如果我只将 'Y' 包含在 WHERE?
中,我不知道是否有办法提取收据日期后的第 10 行计数以获取日历日期
感谢任何帮助。
这是对您的数据做出 几个 假设,因为我们有 none。然而,一种方法是创建一个函数,我在这里使用内联 table 值函数,return 日历 table 中的相关行。请注意,此 假设 天数必须始终为正数,并且如果您提供的日期不是工作日,那么 0
将是下一个工作日日。 IE。向 2021-09-05
添加零个工作日将 return 2021-09-06
,或添加 3 个将 return 2021-09-09
。如果那不是您想要的,这应该足以让您自己到达那里。
CREATE FUNCTION dbo.AddWorkingDays (@Days int, @Date date)
RETURNS TABLE AS
RETURN
WITH Dates AS(
SELECT CalendarDate,
WorkingDay
FROM dbo.CalendarTable
WHERE CalendarDate >= @Date)
SELECT CalendarDate
FROM Dates
WHERE WorkingDay = 1
ORDER BY CalendarDate
OFFSET @Days ROWS FETCH NEXT 1 ROW ONLY;
GO
--Using the function
SELECT YT.DateColumn,
AWD.CalendarDate AS AddedWorkingDays
FROM dbo.YourTable YT
CROSS APPLY dbo.AddWorkingDays(10,YT.DateColumn) AWD;
如果有一种简单的方法可以做到这一点,我有点困惑。
我的数据 table 中有一个名为 receipt_date 的字段,我希望为此添加 10 个工作日(包括银行假日)。
我不确定是否有任何类型的查询可以用来从我的原始查询加入到这个 table 中来计算 10 个工作日,我已经尝试了一些子查询但是我无法正确处理,或者可能无法执行此操作。如果我只将 'Y' 包含在 WHERE?
中,我不知道是否有办法提取收据日期后的第 10 行计数以获取日历日期感谢任何帮助。
这是对您的数据做出 几个 假设,因为我们有 none。然而,一种方法是创建一个函数,我在这里使用内联 table 值函数,return 日历 table 中的相关行。请注意,此 假设 天数必须始终为正数,并且如果您提供的日期不是工作日,那么 0
将是下一个工作日日。 IE。向 2021-09-05
添加零个工作日将 return 2021-09-06
,或添加 3 个将 return 2021-09-09
。如果那不是您想要的,这应该足以让您自己到达那里。
CREATE FUNCTION dbo.AddWorkingDays (@Days int, @Date date)
RETURNS TABLE AS
RETURN
WITH Dates AS(
SELECT CalendarDate,
WorkingDay
FROM dbo.CalendarTable
WHERE CalendarDate >= @Date)
SELECT CalendarDate
FROM Dates
WHERE WorkingDay = 1
ORDER BY CalendarDate
OFFSET @Days ROWS FETCH NEXT 1 ROW ONLY;
GO
--Using the function
SELECT YT.DateColumn,
AWD.CalendarDate AS AddedWorkingDays
FROM dbo.YourTable YT
CROSS APPLY dbo.AddWorkingDays(10,YT.DateColumn) AWD;