Si j'ai bien compris la question, avec [:start, :end]
étant la plage de dates qui vous intéresse, vous recherchez :
select *
from event
where -- event started earlier, ends later
start <= :start and :start <= end
or -- event starts during [:start, :end]
:start <= start and start <= :end
or -- event ends during [:start, :end]
:start <= end and end <= :end;
Si vous recherchez un :day
particulier , utilisez :day
comme :start
et :day + 1 day
comme :end
.