在vb.net中使用查询检测冲突时间?

时间:2019-06-18 08:09:32

标签: vb.net visual-studio-2010

这是我的查询。

("Select Count(*) From table1 where [t1] <= @TimeIn And [t2] >= @TimeOut;", cn)

我的问题是我无法比较其他时间。例如,如果我输入7:00-9:00,那么它将被另存为新时间;如果我输入8:00-10:00,它将也被保存在数据库中,我该如何解决呢?与第一个冲突?

1 个答案:

答案 0 :(得分:1)

寻找有冲突的Time Windows时,需要执行三种检查组合。

  1. TimeIn是否在现有条目(时间窗口)中
  2. 超时是否在现有条目中
  3. TimeIn和TimeOut的组合是否完全覆盖了现有条目

此Sql应该涵盖这些选项

select
    count(*) from table1 
where
    (
        @timeIn > [T1] AND @timeIn < [T2]
    ) -- TimeIn in existing window
    OR
    (
        @timeOut > [T1] AND @timeOut < [T2]
    ) -- TimeOut in existing window
    OR
    (
        @timeIn < [T1] AND @timeOut > [T2]
    ) -- TimeIn and TimeOut wholly covers existing window

如果返回0,就没有冲突

相关问题