【发布时间】:2021-12-19 08:57:48
【问题描述】:
我正在尝试设置一种算法来检测多个日期之间的冲突。但我有一个问题如下:
我有在给定日期编程的块。我试图检测冲突。目标是不要同时看到两个以上的块
我尝试提出有两个以上冲突的情况。 我目前使用这种方法来查找两个日期之间的冲突:
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 发生了三个冲突,但我不想检测到这个冲突。
【问题讨论】:
-
您使用的是哪个 dbms? (当涉及到日期/时间时,许多产品远不符合 ANSI SQL..)
-
向我们展示一些示例表数据和预期结果 - 全部为格式化文本(不是图像或链接)。minimal reproducible example
-
对于 dbms 我使用 mssql
-
强烈建议不要使用图片作为提供有用信息的手段。一个小图像的帮助也不少。您可能完全了解您的数据和您的目标,但没有其他人了解。您需要提供更多信息,这就是请求脚本的原因。并定义与您的样本数据相关的“检测冲突”——您的实际目标是什么以及您希望作为“输出”的是什么。请注意,您似乎只使用日期 - 所以如果不相关,请不要通过包含这些日期的时间来增加混淆。
标签: sql sql-server algorithm date