오늘 날짜 기준으로 조회된 날짜 일수 구하는 법 0 8 3,227

by 스캇 [SQL Query] 날짜 [2013.09.05 10:08:00]


쿼리할때 날짜 기준으로 유효일이랑 비교 해서 오늘날짜에서 유효일까지 1~30일까지 차이만 체크항목에 확인이라고 나오려면 어떻게
쿼해야 할까요? 유효일은 DB 있습니다.

오늘날짜(가정) : 2013-09-05 
유효일은 문자열입니다.  즉. 문자열을 날짜로 변경하던지 혹은 날짜를 문자열 변경하여 조건에 맞게 확인이라고 나와야 됩니다.


유효일 체크
20130101  
20130501  
20131005 확인
20130905 확인
20130920 확인
20140101  

고수님의 가르침 부탁 드립니다.
by 아린 [2013.09.05 10:20:47]
WITH t(dt) AS(
SELECT '20130101' FROM dual UNION ALL     
SELECT '20130501' FROM dual UNION ALL
SELECT '20131005' FROM dual UNION ALL
SELECT '20130905' FROM dual UNION ALL
SELECT '20130920' FROM dual UNION ALL
SELECT '20140101' FROM dual
)
SELECT dt
     , CASE WHEN ABS(TO_DATE(dt, 'yyyymmdd') - SYSDATE) <= 30 
            THEN '확인' 
       END chk 
  FROM t

by 스캇 [2013.09.05 10:45:22]
죄송합니다. 질문이 잘못 되어서 수정 하였습니다.
다시 한번 봐주시겠니까?

by 아린 [2013.09.05 11:13:47]
어디가 수정되었는지 모르겠어요.

그리고, 원하시는 부분이 어디가 이상한가요?

by 스캇 [2013.09.05 11:18:41]
수정된 글은 빨강으로 음영으로 넣었습니다.
오늘날짜 시스템 날짜로 조회되기 때문에 날짜형식이고 유효일은 문자열입니다.
그래서 날짜형을 문자열으로 변경 OR 문자열을 날짜형으로 변경하여  1~30일까지 차이만 체크항목에 확인에
나와야 될것 같습니다. 한수 부탁 드립니다.

by 신이만든짝퉁 [2013.09.05 11:22:53]
아린님께서 작성하신 쿼리가 요구에 맞게 잘 작성된 쿼리인 것 같은데요?

by 신이만든짝퉁 [2013.09.05 11:24:58]
SELECT dt 
 , CASE WHEN ABS(TO_DATE(dt, 'yyyymmdd') - to_date('2013-09-05', 'YYYY-MM-DD')) <= 30  
    THEN '확인' 
  END chk 
 FROM t


이렇게 조금만 수정하시면 날짜를 입력해서 사용가능 합니다.

by 아발란체 [2013.09.05 11:22:28]

빨간색을 봐도...
아린님이 작성하신게 말씀하신 것처럼 되고 있는거 같은데...
어렵다... >ㅅ<);;


by 스캇 [2013.09.05 14:56:09]
감사합니다. 제가 착각했네요.. 많은 도움 되었습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입