Это так же просто, как:
SELECT *
FROM records
WHERE from_date >= @from_date
OR to_date <= @to_date
Где @from_date
и @to_date
только ваши переменные.
Я использовал OR
, так как вы не ищете инклюзивный диапазон.Это просто частичное совпадение.
Вы хотите условие, которое соответствует этой записи from_date=2018-03-20
и to_date=2018-04-11
Давайте рассмотрим условие на основе WHERE from_date >= @from_date OR to_date <= @to_date
@from_date = 2018-03-01 --false
@to_date = 2018-03-31 --true
--
@from_date = 2018-04-01 --true
@to_date = 2018-04-30 --false
--
@from_date = 2018-04-01 --true
@to_date = 2018-04-03 --true
Это показывает, что вы толькотребуется соответствие одной из границ.
Обратите внимание, что в зависимости от СУБД сравнение дат может отличаться, но логика остается той же.