每月第8个工作日计算

时间:2016-12-15 19:12:47

标签: sql-server

如何获得第8个工作日,开始检查数据是否存在。如果确实存在设置并代表超过50%的贷款 - 将验证日期设置为当天

谢谢你关心Shehroz

2 个答案:

答案 0 :(得分:1)

Declare @D date = '2012-12-01'   -- Supply 1st of Month

Select D=max(D) 
 From (
        Select Top 8 D=DateAdd(DD,N,@D) 
         From (Select N From (Values(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13)) N(N) ) A
         Where DatePart(DW,DateAdd(DD,N,@D)) between 2 and 6 
       ) A

返回

2012-12-12

答案 1 :(得分:0)

这将为您提供结果,但我的答案列出了特定日期的所有第8个工作日。

虽然不考虑假期。如果变化很小,您也可以考虑假期。

您可以在最后top 1上使用select来获得一个日期。

DECLARE @start date
SELECT @start = '20160101'

;WITH n AS (
    SELECT n = ROW_NUMBER() OVER (ORDER BY [object_id])
    FROM sys.all_objects
), dates AS (
    SELECT DATEADD(DAY, n - 1, @start) Dt
    FROM n
), dayNum AS (
    SELECT Dt, DATENAME(WEEKDAY, Dt) WeekDayName
           , ROW_NUMBER() OVER (ORDER BY Dt) DayNumber
    FROM dates
    WHERE DATENAME(WEEKDAY, Dt) NOT IN ('Saturday', 'Sunday')
)
SELECT Dt, DATENAME(WEEKDAY, Dt) WeekDayName
FROM dayNum
WHERE DayNumber % 8 = 0
ORDER BY Dt