• Ok, I figured it out. I knew it had to be a reverse of Jeff's code, which can be found at

    http://www.sqlservercentral.com/articles/Advanced+Querying/calculatingworkdays/1660/.

    And it was. I had to read the article several times to really understand what was happening, but basically what I needed to do is this

    IF OBJECT_ID('dbo.fnAddWorkdays','fn') IS NOT NULL

    DROP FUNCTION dbo.fnAddWorkdays

    GO

    CREATE FUNCTION dbo.fnAddWorkdays (@Start DATETIME,@NumDays INT)

    RETURNS DATETIME

    AS

    BEGIN

    DECLARE @EndDate DATETIME

    SELECT @EndDate =

    DATEADD(d,@NumDays,@Start) + (DATEDIFF(wk,@Start,DATEADD(d,@NumDays,@Start))*2)

    +(CASE WHEN DATENAME(dw,@Start) = 'Sunday' THEN 1 ELSE 0 END)

    +(CASE WHEN DATENAME(dw,@Start) = 'Saturday' THEN 1 ELSE 0 END)

    RETURN @Enddate

    END

    And I can test it against Jeff's code

    SELECT dbo.fnAddWorkdays('1/1/2007',20) returns 1/27/2007. If I use 1/27/2007 as the end date I can run Jeff's code to get 20

    DECLARE

    @Start DATETIME,

    @End DATETIME

    SELECT @Start = '1/1/2007'

    SELECT @End = '1/27/2007'

    SELECT

    (DATEDIFF(dd, @Start, @End) + 1)-(DATEDIFF(wk, @Start, @End) * 2)

    -(CASE WHEN DATENAME(dw, @Start) = 'Sunday' THEN 1 ELSE 0 END)

    -(CASE WHEN DATENAME(dw, @End) = 'Saturday' THEN 1 ELSE 0 END)

    Thanks again Jeff. Just another example of how you continue to teach me without even knowing it.

    Greg
    _________________________________________________________________________________________________
    The glass is at one half capacity: nothing more, nothing less.