- если starttime попадает в промежуток фильтра или enddate то вернуть записи? а это фрагмент того что я накидал с одной датой
AND CASE
WHEN (p_start IS NOT NULL AND p_stop IS NOT NULL)
THEN d.start_time BETWEEN p_start AND p_stop
--THEN d.end_time BETWEEN p_start AND p_stop
ELSE TRUE
END
А зачем здесь CASE? Это же запрос на пересечение отрезков, по идее, просто аккуратно напишите условия, и всё.
d.start_time <= p_stop AND d.end_time >= p_start
Можно и проще: (d.start_time, d.end_time) OVERLAPS (p_start, p_stop) Плюс в том, что нуллы оно тоже корректно отработает.
Обсуждают сегодня