В базе данных есть таблица, с временными рамками (id,start,end)
1, 10.01.2017, 15.01.2017
2, 15.01.2017, 20.01.2017
Все даты в timestamp (для наглядности показаны обычные)
Есть интервал времени, с помощью которого нужно найти id из этой таблицы, допустим:
start = 13.01.2017
end = 18.01.2017
Данный интервал пересекается с этими двумя записями, как правильно составить WHERE чтобы вытащить именно эти id, в которые вписывается данный интервал.
Вторая часть вопроса:
Как узнать кол-во дней совпадения для искомого интервала в каждой из записи
Т.е. исходя из примера получается, что:
В первой записи у нас данный интервал охватывает 3 дня, во второй записи 4.
Для правильного вопроса надо знать половину ответа
Условие пересечения интервалов: end1 >= start2 && end2 >= start1
Интервал пересечения: min(end1, end2) - max(start1, start2)
P.S. Только у вас, похоже, формат хранения неправильный. Даты должны храниться с типом DATE ('2017-01-18'), тогда нормально будут работать сравнения и функции.