SQL,DBMS/Oracle SQL
기간과 기간이 겹치는 로우 조회하는 쿼리
noodle-dev
2025. 12. 9. 23:04
기간 A와 기간 B가 겹치는 조건은
기간 A와 기간 B가 겹치지 않는 조건의 부정(NOT)과 같다.
이를 활용하면 조건문을 쉽게 작성할 수 있다.
1. 기간 A와 기간 B가 겹치지 않는 조건
먼저 기간 A와 기간 B가 겹치지 않는 조건은 다음과 같은 경우이다.
겹치지 않는 경우 1: 기간A가 기간B보다 완전히 먼저 끝나는 경우 ( B시작일 > A종료일 )
겹치지 않는 경우 2: 기간A가 기간B보다 완전히 뒤에 끝나는 경우 ( A시작일 > B종료일 )
즉, ( 겹치지 않는 경우 1 OR 겹치지 않는 경우 2)
이를 쿼리로 표현하면
SELECT *
FROM TB
WHERE B시작일 > A종료일
OR A시작일 > B종료일
2. 기간 A와 기간 B가 겹치는 조건
1번의 부정 조건은 ( ~(겹치지 않는 경우 1) AND ~(겹치지 않는 경우 2) ) 이다.
이를 쿼리로 표현하면
SELECT *
FROM TB
WHERE B시작일 <= A종료일
AND A시작일 <= B종료일
앞으로는 쉽게 생각하자.