날짜로 비교한 데이터를 제외한 값을 가져오고 싶어요 0 2 1,784

by 손님 [SQL Query] 날짜비교 not [2013.04.10 15:03:00]


안녕하세요 ..
날짜 조회하는 쿼리를 짜다가 어떻게 해야 할지 방법이 없어서 문의 드려요

룸의 고장 시작일과 고장 종료일,  예약시작, 예약 종료일로 검색을 하고자 합니다.

만약 룸의 예약일이 2013-04-12 - 2013-04-16 이고
해당 룸의 고장일이 2013-04-11 - 2013-04-15 이라면 해당 룸의 데이터를 보여주면 안되는데요 


select * from roomnumber
AND 고장시작시간<=to_char(to_date('2013-04-16' ,'yyyy-mm-dd'),'yy/mm/dd')
and 고장종료시간>=to_char(to_date('2013-03-12' ,'yyyy-mm-dd'),'yy/mm/dd') 이렇게 예약일에 겹치는 고장시간이 있는 데이터를 뽑아 올 수 있는데 제외하는 것이 참 힘드네요 minus는 가져올 컬럼들이 많아서 다시 조인을 해야 되서 아닌거같고 exists 도 select문으로 조회해서 빼는거라... 아닌거같고 저 조건이 아닌것만 가져올수있게 하는 함수나 방법 없을까요?
by 마농 [2013.04.10 15:41:14]
-- 1. Not 을 붙이는 방법
   AND NOT ( 고장시작시간<=to_char(to_date('2013-04-16' ,'yyyy-mm-dd'),'yy/mm/dd')
         AND 고장종료시간>=to_char(to_date('2013-03-12' ,'yyyy-mm-dd'),'yy/mm/dd')
       )
-- 2. Not 을 괄호 안으로 넣으면...AND 가 OR 로 바뀌고
   AND (  NOT 고장시작시간<=to_char(to_date('2013-04-16' ,'yyyy-mm-dd'),'yy/mm/dd')
       OR NOT 고장종료시간>=to_char(to_date('2013-03-12' ,'yyyy-mm-dd'),'yy/mm/dd')
       )
-- 3. Not 을 없애면...부등호가 바뀌죠
   AND (  고장시작시간 > to_char(to_date('2013-04-16' ,'yyyy-mm-dd'),'yy/mm/dd')
       OR 고장종료시간 < to_char(to_date('2013-03-12' ,'yyyy-mm-dd'),'yy/mm/dd')
       )
-- 1,2,3번 방법 중 하나를 쓰시면 됩니다.

by 손님 [2013.04.10 16:52:07]
완전 감사합니다.
-_____-*
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입