计算不包括周末

时间:2014-03-31 14:37:51

标签: sql sql-server date datediff weekend

我正在尝试制作假日预订应用程序并运行JQuery UI日历。他们选择的星号和结束日期将传递给SQL,它将假日放入请求的表中。唯一的问题是如果我把一个开始和结束日期,它没有考虑到周末。系统的每个用户每个日历年有21天的免税额,它也扣除了这个周末。这是当前的代码。

SET @DateDiff = (DATEDIFF(Day,@StartDate,@EndDate) +1)

上面是date-diff语句,下面是插入代码

BEGIN
    INSERT INTO Holidays(EmployeeID, StartDate, EndDate, Duration,Status)
    VALUES(@EmployeeID, @StartDate, @EndDate, @DateDiff,'PE')

    UPDATE Employees
    SET AnnualDaysHolidayAllowance = AnnualDaysHolidayAllowance - @DateDiff
    WHERE ID = @EmployeeID
    SELECT 'successful' AS result
END

业务检查和规则的代码更多,但这是我需要尝试和修复的唯一部分。我对编码比较新,所以如果可能请留下解释,以帮助我理解修复,谢谢。

1 个答案:

答案 0 :(得分:1)

在发布的链接上找到解决方案。 来源:Count work days between two dates 答案(不是我自己的工作)

    SET @DateDiff = (SELECT
                    (DATEDIFF(dd, @StartDate, @EndDate) + 1)
                    -(DATEDIFF(wk, @StartDate, @EndDate) * 2)
                    -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
                    -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END))