(я нашел логику решения здесь: Determine Whether Two Date Ranges Overlap)mySQL диапазон диапазонов дат, как сравнивать?
структура таблицы:
contracts[start_date, end_date]
Моя форма использует два входа, inp_start_date
и inp_end_date
. Я хочу использовать их значения для выбора контрактов, находящихся в диапазоне.
Пример (псевдо):
- договор действует между его датой_начала к его датой_окончанию.
- Получить все контракты, которые действительны, между inp_start_date к inp_end_date
Что является лучшим способом создать условия для этого запроса?
редактировать
Примеры:
если мой inp_start_date is 5/21/2005
и inp_end_date is 9/21/2005
то отберет контракты, которые начинаются и заканчиваются ДО И ПОСЛЕ inp_start_date и inp_end_date, до тех пор, как это был действительным в этом интервале времени, даже частично.
Запрос найдет все контракты, что их диапазон дат, пересекает диапазоны дат inp_start и inp_end.
контракта и пример входов:
contract.start_date = 1.1.2001 |#| contract.end_date = 5.31.2001
input.start_date = 10.21.2000 |#| input.end_date = 2001.3.21
Этот контракт должен быть пойман, так как по крайней мере часть его находится в диапазоне.
Что вопрос на самом деле о? Вы знаете, как это сделать * любым способом *? Это базовое сравнение двух столбцов с 'AND'. – zerkms
Даты можно сравнить, как и все остальное. Используйте «<' or '>» или «МЕЖДУ». Если у вас есть проблема с этим, сообщите нам более конкретный вопрос, и мы можем вам помочь. –
, пожалуйста, перечитайте мой вопрос .. это не единственная дата! в пределах диапазона. это диапазон в пределах диапазона. проверьте редактирование, пожалуйста. – yossi