首页 > 解决方案 > DateTime 重叠 3 个日期

问题描述

我正在尝试建立一种算法来检测几个日期之间的冲突。但我有一个问题如下:

我有在给定日期编程的块。我试图检测冲突。目标是不要同时看到两个以上的街区

我试图提出有两个以上冲突的情况。我目前使用这种方法来查找两个日期之间的冲突:

Datestart <= @DateEndToTest AND DateEnd >= @DateStartToTest 

问题是我在一秒钟内有三个冲突。这是一个图表,可以更好地解释它:

如何避免在 00:00 检测到三个冲突?

提前致谢

问题是我一次总是有三个冲突

B1 -> start: 2021-12-24 00:00:00 | end: 2021-12-25 00:00:00
B2 -> start: 2021-12-25 00:00:00 | end: 2021-12-26 00:00:00
B3 -> start: 2021-12-24 00:00:00 | end: 2021-12-26 00:00:00
(b3 covers b1 and b2)

2021-12-25 00:00:00 的三个冲突,但我不想检测到这个冲突。

标签: sqlsql-serveralgorithmdate

解决方案


要排除一个,您必须更改您的限制检查。

如果你不想要第一个:

[DateStart] <= @DateTimeEnd AND [DateEnd] > @DateTimeStart

如果你不想要第二个:

[DateStart] < @DateTimeEnd AND [DateEnd] >= @DateTimeStart

推荐阅读