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