1
**Schedule Table** 
Day nvarchar()
StartTime time(7)
EndTime time(7)

我想检测我的输入是否会与任何现有记录重叠。

Day -------- StartTime -------- EndTime
Sunday       10:00:00           15:00:00

这将不允许插入一个值

Day -------- StartTime -------- EndTime
Sunday       10:00:00           11:00:00

Day -------- StartTime -------- EndTime
Sunday       10:00:00           12:00:00

等等。

我的代码:

SELECT * FROM Schedule
WHERE Day = 'Sunday' AND
    NOT(StartTime < '10:00:00' AND EndTime > '11:00:00')
AND (StartTime < '10:00:00'  AND EndTime > '11:00:00')
4

2 回答 2

0

您可以使用 where 子句检测重叠时段,例如:

where   p1.startTime <= p2.EndTime
        and p2.startTime <= p1.EndTime

如果您要插入,您可以将这些行替换为p2您要插入的行。

于 2013-01-14T18:25:24.143 回答
0
    SELECT * FROM Schedule
    WHERE Day = 'Sunday' AND
    ('10:00:00' < EndTime AND '12:00:00' > StartTime)
    ORDER BY ScheduleID
于 2013-01-14T18:34:48.837 回答