此存储过程用于检查任何用户不能在同一时间段内申请休假的日期验证,该时间段之前在同一时间段内应用。这工作正常。但是如果任何用户想要更新休假时间,那么它就无法工作
例如,如果用户之前申请休假 - 2013 年 5 月 12 日至 2013 年 5 月 19 日,并且 registerLeaveID(休假表中的唯一字段)为 14。
如果用户想将相同的 registerLeaveID 的休假持续时间从 2013 年 5 月 14 日更新到 213 年 5 月 16 日,则此存储过程还将新的休假日期与此 registerLeaveID(12) 日期进行比较。
如何停止不使用 registerleaveID 日期检查日期验证
CREATE PROCEDURE dbo.Test
@startdate datetime,@enddate datetime,@Userid int ,@Registerid
AS
BEGIN
SELECT Count(*) FROM leave
WHERE
(
(UserID=@userid)
AND
(
(@startdate BETWEEN StartDate AND EndDate)
OR
(@enddate BETWEEN StartDate AND EndDate)
OR
(
(@startdate <= Startdate AND @enddate>=EndDate)
)
)
)
END