등록된 형식이 실제 존재하는 날짜인지 확인하는 쿼리 0 2 1,037

by COC GO [PL/SQL] [2021.01.05 10:21:17]


안녕하세요. 
사용자가 등록한 6글자가 실제 날짜인지 확인하고 싶습니다.
예를 들어서 사용자가 '201305'로 등록하면 2020년 13월 05일이 되는데 이건 존재하지 않는 날짜이지요.

SELECT TO_DATE('201305','YY-MM-DD') FROM DUAL;

물론 실행하면 [ORA-01861:리터럴이 형식 문자열과 일치하지 않음] 에러가 발생합니다.

제가 원하는것은 오라클 에러가 아닌 사용자가 이것은 날짜형식이 아니라는 에러를 띄우고 싶은데 의외로 검색해 봐도 방법이 안나오네요.

by 마농 [2021.01.05 12:35:35]

0. 년도는 두자리 인가요?
   - 항상 2000 년대 인가요?
   - 1900 년대는 없는지?
1. 규칙을 정하고 프로그래밍으로 체크하는 방법
   - (00~99)(01~12)(01~31)
   - 방식 : 정규식 함수 등을 이용할 수 있음
   - 한계 : 월마다 말일이 다름, 윤년, 윤달등 체크 어려움
2. 날짜체크용 사용자 함수 사용
   - 방식 : to_date 를 사용하여 오류나는지 체크하는 함수 생성
   - 장점 : 완벽한 체크 가능
   - 단점 : 함수 생성 및 사용에 대한 비용
3. 날짜 테이블 미리 생성하여 조인 비교
   - 장점 : 함수사용에 대한 부담 없음
   - 단점 : 테이블 생성 비용


by COC GO [2021.01.05 17:26:43]

제가 원하는 방법이 제시하신 2번 방식입니다. 

함수를 만들어서 체크하는건 생각 못 했는데 함수 리턴값에 사용자 에러를 넣으면 되는건가요? (될것 같네요.)

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