Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不包括周末的计算_Sql_Sql Server_Date_Datediff_Weekend - Fatal编程技术网

Sql 不包括周末的计算

Sql 不包括周末的计算,sql,sql-server,date,datediff,weekend,Sql,Sql Server,Date,Datediff,Weekend,我正在尝试制作一个假期预订应用程序,它运行jQueryUI日历。他们选择的开始日期和结束日期被传递到SQL,SQL将假日放入请求的表中。唯一的问题是,如果我把开始和结束日期都放进去,就不会考虑周末。该系统的每个用户每个日历年有21天的假期,并扣除该假期的周末。这是当前的代码 SET @DateDiff = (DATEDIFF(Day,@StartDate,@EndDate) +1) 上面是日期差异语句,下面是插入代码 BEGIN INSERT INTO Holidays(Employe

我正在尝试制作一个假期预订应用程序,它运行jQueryUI日历。他们选择的开始日期和结束日期被传递到SQL,SQL将假日放入请求的表中。唯一的问题是,如果我把开始和结束日期都放进去,就不会考虑周末。该系统的每个用户每个日历年有21天的假期,并扣除该假期的周末。这是当前的代码

SET @DateDiff = (DATEDIFF(Day,@StartDate,@EndDate) +1)
上面是日期差异语句,下面是插入代码

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

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

在发布的链接上找到了解决方案。 资料来源: 答案(不是我自己的作品)


您使用什么RDB?您是否只需要考虑周末,或者您所在地区是否也应该考虑“标准”假日?如果是后者,它通常是指向创建日历表的指针,该日历表可以包含周末、标准假日甚至其他特定于组织的特殊事件的信息。RDB对我来说闻起来像MS-SQL…添加了SQL server标记,因为语法看起来确实像SQL server。看看这篇文章-它应该会有所帮助。。。[堆叠溢位文章][1][1]:
    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))