@DCDen

Как узнать кол-во дней в двух временных отрезках?

Вопрос из двух частей

Первая часть

В базе данных есть таблица, с временными рамками (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.

А вот как это вычислить, не могу придумать
  • Вопрос задан
  • 130 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Условие пересечения интервалов:
end1 >= start2 && end2 >= start1
Интервал пересечения:
min(end1, end2) - max(start1, start2)
P.S. Только у вас, похоже, формат хранения неправильный. Даты должны храниться с типом DATE ('2017-01-18'), тогда нормально будут работать сравнения и функции.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы