определить время конфликта с помощью запроса в vb.net? - PullRequest
0 голосов
/ 18 июня 2019

Это мой запрос.

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

Моя проблема в том, что я не могу сравнить другие времена. Например, если я введу 7:00-9:00, то оно будет сохранено как новое время, и если я затем введу 8:00-10:00, оно также сохранит в моей базе данных, как я могу решить эту проблему, я хочу предотвратить конфликт второго времени ввода с первым

1 Ответ

1 голос
/ 18 июня 2019

При поиске конфликтующих окон времени вам нужно выполнить три комбинации проверок.

  1. TimeIn в существующей записи (временное окно)
  2. Является ли TimeOut в существующей записи
  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, конфликты отсутствуют

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...