У меня есть таблица tblBranchTimingEntryПроверьте дату перекрывается в SQL
+---------------+-------------------------+-------------------------+------------------+
| BranchEntryID | fromDate | toDate | SundayIn |
+---------------+-------------------------+-------------------------+------------------+
| 24 | 2015-01-01 00:00:00.000 | 2015-01-31 00:00:00.000 | 12:00:00.0000000 |
| 24 | 2015-02-01 00:00:00.000 | 2015-02-15 00:00:00.000 | 12:00:00.0000000 |
| 24 | 2015-03-01 00:00:00.000 | 2015-03-31 00:00:00.000 | 00:00:00.0000000 |
| 24 | 2014-01-01 00:00:00.000 | 2014-12-31 00:00:00.000 | 00:00:00.0000000 |
+---------------+-------------------------+-------------------------+------------------+
Requirement
Я даю вход BranchEntryID, FromDate, Todate и я хочу, чтобы проверить, если дата между fromDate и toDate over lap с диапазонами дат, хранящимися в tblBranchTimingEntry.
То, что я сделал до сих пор
У меня есть этот запрос,
SELECT
*
FROM
[dbo].[tblBranchTimingEntry]
WHERE
BranchEntryId = 24
AND
('2015-01-14' BETWEEN fromDate AND toDate OR '2015-02-28' BETWEEN fromDate AND toDate)
Это будет проверять перекрытие.
Проблема
Это будет работать, только если дата ввода падает между датами, присутствующих в БД. В этом примере это не удастся.
Предположим, что я даю fromdate и todate как '2015-02-16' и '2015-08-27', Этот запрос ничего не вернет. Но между этими датами встречаются даты.
Любое решение?
возможно дубликат [Определить, является ли двух диапазонов дат Перекрытие] (HTTP: // StackOverflow .com/вопросы/325933/определяет, является ли-два-дата-диапазоны-перекрытие) – Magnus