У меня есть вопрос MySQL. Я использую Laravel в примерах ниже, но мой вопрос скорее связан с MySQL.
Предположим, у меня есть таблица встреч. Встреча может быть любой продолжительности.
Итак, у меня 2 встречи;
Так; если я буду искать записи между 1 и 2 марта — я получу 2 результата. Что-то вроде «где дата <= 1 марта И <= 2 марта «
Не обращайте внимания на команду — это всего лишь пример.
Суть в том, что если я буду искать записи с 1 по 2 марта, я получу две встречи.
Мой вопрос, хотя; что если у меня будет мероприятие с 29 апреля по 4 марта?
В качестве примера;
Так что, если у меня есть две даты, и я говорю «ГДЕ дата> = 2019-03-01 И <= 2019-03-02 «- тогда я все равно получу Назначение А и Назначение Б.
Но на самом деле пространство будет занято из-за назначения С
Как я могу все еще искать записи между двумя переменными даты — НО способ найти Встречу C также?
Так что, в основном, при составлении / составлении календаря у меня должен быть свой лист календаря, и я вижу Встречу А и Встречу Б — но я также должен видеть Встречу С как события целого дня.
Я не хочу выбирать все записи о встречах из базы данных и сортировать их — я надеюсь на лучшее решение.
Представьте, что мы должны найти события, которые происходят между t1 и t2. Например, у нас есть события, которые охватывают между a1 и a2, b1 и b2 и c1 и c2.
Согласно тому, что вы говорите, следующая формула удовлетворит ваш запрос:
SELECT * FROM some_table WHERE (start_date < t1 AND end_date > t1) OR (start_date >= t1 AND start_date < t2)
Вот t1
а также t2
являются границами запрошенного диапазона, start_date
а также end_date
столбцы, которые хранят соответствующие данные в MySQL.
Других решений пока нет …