- если 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) Плюс в том, что нуллы оно тоже корректно отработает.
Обсуждают сегодня