문자, 숫자를 날짜로 변환하는 방법 질문드립니다. 0 5 3,976

by 물개 [Oracle 기초] [2013.05.30 08:55:51]


비밀번호 변경 안내 메세지 팝업을 처리하려고 합니다.

현재 날짜보다 6개월 이상 차이가 날 경우에

메세지를 보여주기 위한 형태의 쿼리가 필요해서 질문드립니다.

현재 해결못한 문제는

비밀번호 변경일 + 180  과
TO_CHAR(SYSDATE, 'YYMMDD') 형태를 
비교하여 결과값이 0개인지 1개인지에 따라서
팝업창을 보여주고자 합니다.

여기서 비밀번호변경일이 이미 특정 문자값(20131230)이런 형태로 저장이 되어 있고
+ 180을 하게 되면
20131410 이런 결과가 나오게 되어 비교하는데 문제가 생겨납니다.(에러가 발생됩니다)

20131410을 날짜형태로 변환하여 비교하는 방법이 있을까요?

아니면 다른 해결방법으론 무엇이 있을까요...?

읽어주셔서 감사합니다.
by 아린 [2013.05.30 09:08:21]
날짜 형변환을 해주세요.
180일 보다는 6개월을 더해주는게 맞는것 같네요.

SELECT TO_CHAR(SYSDATE + 180, 'yyyymmdd') "오늘로부터 180일후" 
     , TO_CHAR(ADD_MONTHS(SYSDATE,6), 'yyyymmdd') "오늘로부터 6개월후"
     , TO_CHAR(TO_DATE('20131230','yyyymmdd')+180, 'yyyymmdd') "날짜지정후 180일후" 
     , TO_CHAR(ADD_MONTHS(TO_DATE('20131230','yyyymmdd'), 6), 'yyyymmdd')
       "날짜지정후 6개월후" 
  FROM dual

by 허승호 [2013.05.30 09:12:30]

SELECT (CASE WHEN (TO_DATE('20131230') + 50)  >= SYSDATE THEN '초과(1)' ELSE '미초과(0)' END ) FROM DUAL

이게 맞는건지? ㅎ

by 물개 [2013.05.30 09:32:08]
TO_DATE라는 함수가 있군요!!! ADD_MONTHS라는 함수까지!!

아린님 허승호님 답변 감사드립니다~~~!

by 마농 [2013.05.30 09:32:54]
컬럼과 상수값을 비교할때는
컬럼을 변경하는것보다는 비교값을 변경하는게 좋습니다.
WHERE 변경일자 < TO_CHAR(sysdate - 180, 'yyyymmdd')

by 물개 [2013.05.30 09:41:38]
아~ sysdate 쪽이 상수값에 해당되며 이쪽을 바꾸는 게 좋은 것이군요!

마농님 답변 감사합니다~~~!
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입