我想查找时间冲突,但它没有为我提供以下记录的正确结果。 我想为时隙返回冲突 - “t1.starttime 到 t2.endtime”,因为这个时隙与“t2.starttime 和 t2.endtime”冲突,因为 7 到 12 时间覆盖了 8 到 11.30 的一些时间。
t1.StartTime t1.EndTime t2.StartTime t2.EndTime ---------------- ---------------- ---------------- ---------------- 07:00:00.0000000 12:00:00.0000000 08:00:00.0000000 11:30:00.0000000
i execute below query but it does not give me result.
SELECT
count(1)
FROM
t1 INNER JOIN t2 ON
CAST(t1.StartTime as TIME)
BETWEEN CAST(t2.StartTime as TIME)
AND CAST(t2.EndTime as TIME) OR CAST(t1.EndTime as TIME)
BETWEEN CAST(t2.StartTime as TIME)
AND CAST(t2.EndTime as TIME)
最佳答案
重叠的正确逻辑要简单一些:
SELECT count(1)
FROM t1 INNER JOIN
t2
ON CAST(t1.StartTime as TIME) < CAST(t2.EndTime as TIME) and
CAST(t1.EndTime as TIME) > CAST(t2.StartTime as TIME);
逻辑是一个间隔在另一个结束之前开始,在另一个间隔开始之后结束。
关于sql - 如何在 SQL 查询中查找时隙冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047360/