Add business days to date in SQL without loops

后端 未结 25 2860
无人共我
无人共我 2020-12-02 22:54

I currently have a function in my SQL database that adds a certain amount of business days to a date, e.g. if you enter a date that is a Thursday and add two days, it will r

25条回答
  •  伪装坚强ぢ
    2020-12-02 23:42

    I found a much more elegant approach from Microsoft Docs. It takes into account skipping multiple weekends. Super clean.

    CREATE FUNCTION DAYSADDNOWK(@addDate AS DATE, @numDays AS INT)
    RETURNS DATETIME
    AS
    BEGIN
        WHILE @numDays>0
        BEGIN
           SET @addDate=DATEADD(d,1,@addDate)
           IF DATENAME(DW,@addDate)='saturday' SET @addDate=DATEADD(d,1,@addDate)
           IF DATENAME(DW,@addDate)='sunday' SET @addDate=DATEADD(d,1,@addDate)
    
           SET @numDays=@numDays-1
        END
    
        RETURN CAST(@addDate AS DATETIME)
    END
    GO
    

    Run the test

    SELECT dbo.DAYSADDNOWK(GETDATE(), 15)
    

提交回复
热议问题