2011-03-15 6 views
3

를 선택는 사이 또는 내가 날짜 범위에 필터링 할 수있는 방법

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

은 (답변으로 게시 Update에서 복사) 여기

내 조건

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

당신이 그룹화에 OR와 AND ((첫 번째 조건) OR (두 번째 조건)) 작동하지 – BlackTigerX

답변

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

+1

편집 질문 저희에게 당신의 상태를 보여줍니다. – codaddict

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에 대한 서식 지정 :) –

1

OCD의 비트는 항상 SQL에 도움이 .. .

당신이 가진 모든 괄호가 필요 없지만, 당신이 기대하는대로 작동하지 않습니다.

.... 
    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 
관련 문제