(select * from t where date < start_date order by date desc limit 1) union (select * FROM t WHERe date between start_date and end_date) union (select * from t where date > end_date order by date asc limit 1)

(select * from t where date < start_date order by date desc limit 1) union (select * FROM t WHERe date between start_date and end_date) union (select * from t where date > end_date order by date asc limit 1)