ОБНОВЛЕНИЕ: После хорошей дискуссии с Адой я вижу, что его запрос является оптимальным решением. Хотя мой ответ ниже будет работать, он излишний. Я оставлю этот ответ здесь ради истории. +1 к ответу Ады.
Насколько я понимаю, он хочет получить любые задачи, над которыми работали в любой момент между указанными датами. Это подразумевает частично перекрывающиеся задачи, а также задачи, которые начались и закончились в течение интервала времени.
Два временных интервала перекрываются, если:
- Время начала задачи 1 находится где-то между временем начала и окончания задачи 2 ИЛИ
- Время окончания задачи 1 находится где-то между временем начала и окончания задачи 2 ИЛИ
- Время начала и окончания
Я успешно использовал этот метод в системе бронирования, чтобы предотвратить любое совпадение при бронировании.
До сих пор в ответах я не видел запроса, который проверял бы оба эти условия. Вот моя попытка:
WHERE ( (StartDate >= @FromDate) AND (StartDate <= @EndDate) )
OR ( (EndDate >= @FromDate) AND (EndDate <= @EndDate) )
OR ( (StartDate <= @EndDate) AND (EndDate >= @StartDate) )