0

我需要编写一个简单的查询,返回给定日期之前的三个工作日。我不想创建日历表。是否有一种使用 dateadd() 和 datepart() 的算法可以用来获得这个结果?

4

2 回答 2

0

我最终使用了一个while循环来计算工作日的数量。

我一次又一次地循环往复,直到我使用这个工作日逻辑获得所需的工作日数:

set @isweekday=case when (DATEPART(dw, @tempdate) + @@DATEFIRST) % 7 NOT IN (0, 1) then 1 else 0 end
于 2013-07-08T13:48:30.840 回答
0

这是我以前用作模板的东西,我发现它非常有用:

DECLARE @DateOld datetime, @DateNew datetimeSET @DateOld = '10-Sep-2005'SET @DateNew = GETDATE()
SET DATEFIRST 1
SELECT DATEDIFF (day, @DateOld, @DateNew) - (2 * DATEDIFF(week, @DateOld, @DateNew)) - CASE WHEN DATEPART(weekday, @DateOld + @@DATEFIRST) = 1 THEN 1 ELSE 0 END - CASE WHEN DATEPART(weekday, @DateNew + @@DATEFIRST) = 1 THEN 1 ELSE 0 END 

来源:http ://sqlcode.blogspot.com/2007/07/calculate-number-of-business-days.html

于 2013-07-02T18:36:37.333 回答