Есть таблица событий -
event_dates, поля -
start_date, end_date. Нужно достать все события который заняты в определенную дату.
array_dates = [
["2018-09-10 10:00:00", "2018-09-10 12:00:00"], # 0 - начало события, 1 - конец события
["2018-09-10 14:00:00", "2018-09-10 16:00:00"],
["2018-09-10 18:00:00", "2018-09-10 20:00:00"],
["2018-09-10 22:00:00", "2018-09-11 00:00:00"],
]
SELECT * FROM event_dates
WHERE (start_date BETWEEN array_dates[0][0] AND array_dates[0][1])
OR (end_date BETWEEN array_dates[0][0] AND array_dates[0][1])
OR (start_date BETWEEN array_dates[1][0] AND array_dates[1][1])
OR (end_date BETWEEN array_dates[1][0] AND array_dates[1][1])
OR (start_date BETWEEN array_dates[2][0] AND array_dates[2][1])
OR (end_date BETWEEN array_dates[2][0] AND array_dates[2][1])
OR (start_date BETWEEN array_dates[3][0] AND array_dates[3][1])
OR (end_date BETWEEN array_dates[3][0] AND array_dates[3][1])
Есть ли способ более оптимизированный ?