如何使用SQL Server验证小数间隔?

时间:2014-11-14 19:42:54

标签: sql-server stored-procedures

我尝试对存储过程进行编码,以检查当前是否在表中存储了新的间隔。

示例:

我的桌子上有这些值:

startHour = 7.20

endHour = 8.10

我想找到一种方法来取消任何带有startHour或endHour的插入,这会导致与之前存储的值冲突,例如startHour = 7.21,7.32,8.09等。 我的意思是,区间7.20 - 8.10不可用。 是的,我使用小数。 谢谢!

1 个答案:

答案 0 :(得分:0)

我认为你可以这样做:

declare @startHour decimal
declare @endHour decimal

IF
    0 =
    (SELECT 
        COUNT(*)
    FROM HourIntervals
    WHERE (startHour <= @startHour AND @startHour < endHour) OR (startHour <= @endHour AND @endHour < endHour))
BEGIN
    -- Interval ok, insert your record here
    select 1
END
ELSE
BEGIN
    -- Interval overlaps, don't insert
    select 0
END