날짜 비교 질문입니다^^; 0 4 2,761

by 강영수 날짜 [2008.07.16 23:26:57]


안녕하세요..

 

다름이 아니라 날짜 비교 때문에 좀 고생하구 있습니다..

우선 칼럼이 두개 있으며, 칼럼은 각각 시작일과 종료일로 구분됩니다.

START_DATE, END_DATE..로 구분되구요.. 둘다 VARCHAR2(8)입니다.

예로..

START_DATE        END_DATE

--------------------------------------------

20080710             20080720

20070110             20080220

----------------------------------------------

이렇게 데이터가 들어있구요..

 

여기서 신규 데이터를 저장을 할려고 하는데.. 저장하기전 날짜 비교를 해서 저장을 합니다.

조건은 새로 저장될 데이터는 기존 데이터에서,.

시작일과 종료일에 중복이 되면 안되구.. 같아도 안되고.. 양쪽 하나라도 겹치면 안되요..

 

제가 그래서 짠게..

SELECT  COUNT(START_DATE) CNT
FROM (  
SELECT  START_DATE FROM TEST

WHERE 1=1

-- 시작일비교
AND ’20080710’ BETWEEN START_DATE  AND END_DATE

UNION ALL

SELECT  START_DATE
FROM TEST

WHERE 1=1

-- 종료일비교
AND  ’20080730’ BETWEEN START_DATE AND END_DATE

)

쿼리작성은 이렇게 했는데 날짜가 겹치더라도 등록이 되버리게 된 쿼리네요..ㅜㅜ

절대 어느하나라도 겹치거나 중복이 되면 안되거든요..

 

도와주세요 ㅠㅠ

by 마농 [2008.07.17 08:06:18]
SELECT COUNT(*) cnt
FROM test
WHERE start_date <= :입력종료일
AND end_date >= :입력시작일

by 강영수 [2008.07.17 09:56:43]
트리거인가요?

마농님께서 올려주신거로 했는데..

SELECT COUNT(*) cnt
FROM test
WHERE start_date <= 입력종료일
AND end_date >= 입력시작일

: 이거 빼구 했는데 중복 상관없이 카운터가 되네요 ㅠ


by 마농 [2008.07.17 10:42:55]
[트리거인가요?] 이건 저에게 물어보는건가요?
전 그냥 기존자료중 입력된 시작 및 종료일자 사이에 들어가는 기존자료를 조회하는 쿼리를 알려드렸을 뿐입니다.

by finecomp [2008.07.17 17:51:00]
테스트 방법을 헷갈리시는 듯...;
1. 마농님의 쿼리에서 :입력시작/종료일에 님이 저장하려는 날짜를 대입.
2. 쿼리결과 cnt가 0보다 크다면 중복이 있다는 의미이니 저장 안하고 후속 조치를 취하시면 되겠죠?
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입