Nếu tôi hiểu đúng câu hỏi, với [:start, :end]
là phạm vi ngày mà bạn quan tâm, bạn đang tìm kiếm:
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;
Nếu bạn đang tìm kiếm một :day
cụ thể , sử dụng :day
as :start
và :day + 1 day
dưới dạng :end
.