2009-11-13 70 views
1

我希望有人可以幫助處理複雜的日期範圍SQL查詢。MySQL中複雜的日期範圍查詢

我需要找到的記錄一大堆可能是:搜索範圍之外搜索的日期範圍
2)內 1),但通過它
3)外的搜索範圍內的左運行,開始4)搜索範圍的右側,開始和結束之後。

這比我想象的要複雜得多!

到目前爲止,我抓住了前兩個。

AND (
    (event_dates.date_start <= *startdate* AND event_dates.date_end >= *enddate*) 
    OR (event_dates.date_start >= *startdate* AND event_dates.date_end <= *enddate*) 
) 

如何包含最後兩個,而不必拉取搜索範圍前後的所有內容?

非常感謝,
克里斯

回答

4

如果希望能碰到日期範圍,那麼你只需要排除的範圍或結束範圍開始前結束之後開始的那些所有記錄:

NOT (date_start > *enddate* or date_end < *startdate*) 

這相當於

date_start <= *enddate* and date_end >= *startdate* 
+0

這是輝煌! 非常感謝:) – ChrisS 2009-11-13 15:45:38