2011-03-15 56 views
3

我怎樣才能做到在過濾日期範圍BETWEEN和或選擇

Select * from XXX where date between DATE1 AND DATE2 OR Between DATE3 AND DATE4 

(從更新張貼的答案複製)

這裏是我的病情

WHERE (items_count != '0') 
     AND (main_table.is_active = '1') 
     AND (main_table.store_id IN ('0', '1')) 
     AND (main_table.updated_at BETWEEN 
      '2011-03-04 16:52:19' AND '2011-03-05 16:52:19' 
      ) 
     OR (main_table.updated_at BETWEEN 
      '2011-03-13 16:52:19' AND '2011-03-14 16:52:19' 
      ) 
LIMIT 0, 30 

第一個條件永不使用

+0

您需要在基或AND((第一狀態)OR(第二狀態)) – BlackTigerX 2011-03-15 17:15:14

回答

3
Select * from XXX 
    where (date between DATE1 AND DATE2) 
     OR 
     (date between DATE3 AND DATE4) 

編輯:

試試這個:

WHERE items_count != '0' AND 
     main_table.is_active = '1' AND 
     main_table.store_id IN ('0', '1') AND 
     ( main_table.updated_at BETWEEN '2011-03-04 16:52:19' AND '2011-03-05 16:52:19' 
     OR 
     main_table.updated_at BETWEEN '2011-03-13 16:52:19' AND '2011-03-14 16:52:19' 
    ) 
+0

那不行,我還有其他有條件的地方 – FzhEmca 2011-03-15 17:04:44

+1

編輯的問題,並告訴我們你在那裏的條件。 – codaddict 2011-03-15 17:05:43

1

把它們作爲獨立的條件:

select * from xxx where (date between date1 and date2) or (date between date3 and date4); 
1

像這樣:

select * from XXX 
where (date between DATE1 AND DATE2) 
    or (date between DATE3 AND DATE4) 
+0

+1格式:) – 2011-03-15 17:03:26

1

OCD的位始終與SQL幫助.. 。

你不用不需要你有的所有括號,但是OR沒有按你期望的方式工作。

.... 
    WHERE 
    items_count != '0'   
    AND 
    main_table.is_active = '1'   
    AND 
    main_table.store_id IN ('0', '1') 
    AND (
     main_table.updated_at 
     BETWEEN '2011-03-04 16:52:19' 
     AND '2011-03-05 16:52:19' 
     OR 
     main_table.updated_at 
     BETWEEN '2011-03-13 16:52:19' 
     AND '2011-03-14 16:52:19' 
    ) 
    LIMIT 0 , 30