小编Jon*_*Jon的帖子

如何使用TSQL检查日期在表中不重叠

我有一个包含开始和结束日期时间的表,我需要确定是否有任何重叠并且不确定最佳方式.

最初我正在考虑使用如下所示的嵌套游标,这确实有效,但是我正在检查彼此相同的记录两次并且我确定它不是非常有效.

例如:这个表会导致重叠.

id  start                       end
-------------------------------------------------------
1   2009-10-22 10:19:00.000     2009-10-22 11:40:00.000
2   2009-10-22 10:31:00.000     2009-10-22 13:34:00.000
3   2009-10-22 16:31:00.000     2009-10-22 17:34:00.000

Declare @Start datetime, @End datetime, @OtherStart datetime, @OtherEnd datetime, @id int, @endCheck bit

Set @endCheck = 0

DECLARE Cur1 CURSOR FOR
        select id, start, end from table1 

OPEN Cur1
FETCH NEXT FROM Cur1 INTO @id, @Start, @End
WHILE @@FETCH_STATUS = 0 AND @endCheck = 0
BEGIN
    -- Get a cursor on all the other records
    DECLARE Cur2 CURSOR …
Run Code Online (Sandbox Code Playgroud)

t-sql

4
推荐指数
1
解决办法
2423
查看次数

标签 统计

t-sql ×1