Just to add another version - I used Jason's code and added a parm for number of days to add, plus or minus:
[font="Courier New"]
CREATE FUNCTION dbo.GetNextBusinessDay (@Date datetime,
@DaysToAdd int)
RETURNS datetime
/* Name: GetNextBusinessDay
*
* Purpose: Calculate business days from a particular date. @DaysToAdd can be positive or negative.
*
* Modification History:
* 03/20/2009 VRI Derived from http://www.sqlservercentral.com/Forums/Topic228794-253-2.aspx "Jason"
*
*/
AS
BEGIN
DECLARE @DayCounter int,
@Sign int
SET @DayCounter = 0
SET @Sign = SIGN(@DaysToAdd)
WHILE (@DayCounter < ABS(@DaysToAdd))
BEGIN
SET @Date = DATEADD(dd, @Sign, CONVERT(datetime, (CONVERT(CHAR(10), @Date, 101))))
WHILE ((@@DATEFIRST + DATEPART(dw, @Date) - 1) % 7) + 1 IN (1, 7)
OR @Date IN (SELECT HolidayDate
FROM Holiday)
SET @Date = DATEADD(dd, @Sign, @Date)
SET @DayCounter = @DayCounter + 1
END
RETURN @Date
END[/font]