날짜형식 체크 0 10 915

by 불장작 [2019.11.19 16:01:08]


컬럼이 date 형식으로 되어있는데 data가 date형식이 아니면 null이고 date형식이면 컬럼에 입력되게 하려면 어떻게 체크해야 할까요?

예) 2019-05-23 이면 2019-05-23

     2019-13-11 이면 null

     abced 이면 null 을 표현하고자 합니다.

많은 고수분들의 조언 부탁드립니다

 

by jkson [2019.11.19 16:16:12]

설명을 정확하게 해주셔야할 것 같습니다.

'컬럼에 입력되게' --> insert시 정합성 체크를 한다는 것인가요?

'abced 이면 null 을 표현하고자' -> select 쿼리를 만들고 싶으신 건가요?


by 불장작 [2019.11.19 16:22:20]

날짜형식이면 select 에 표현되고 날짜형식이 아니면 null로 표현되면 됩니다.

select case when aaa_ymd = 올바른잘짜 then aaa_ymd

               else '' end

 


by 마농 [2019.11.19 16:27:01]

텍스트로 입력된 값을 날짜로 바꾸어 저장하려는 듯 한데요?
텍스트로 입력 받지 마시고 달력에서 선택해서 입력하는 방식으로 바꾸시는게 좋을 듯 합니다.
--> 오류 자료 입력 원천 차단
텍스트로 입력을 받는다면?
yyyy-mm-dd 형식만 유효하게 입력되는 것인지?
사용자에게 입력을 맡기면 다양한 예외가 발생할 것입니다.
- 대신 . 이나 / 또는 공백을 입력한다거나?
아니면 구분자가 아예 없다거나?
구분자를 한글로 입력한다거나?
월일이 두자리가 아닌 한자리만 입력한다거나? 2019-1-3
년도를 두자리만 입력한다거나?
일자 없이 년월만 입력한다거나?
등등등...


by 불장작 [2019.11.19 16:32:12]

자료를 conversion해야 하는데 해당 컬럼의 날짜를 유효성을 체크해서 날짜형식인 것만 값을 넘기고 아니면 null을

넘길려고 합니다


by 마농 [2019.11.19 16:37:52]

말씀드렸듯이 날짜 형식은 다양합니다.
다양한 모든 케이스가 존재하는지? 몇가지로 한정되는지? 아니면 한가지 형태만 존재하는지?
현재 대상 자료의 형식을 정확하게 확인해 주세요.


by 불장작 [2019.11.19 16:40:02]

날짜의 형식은 다향합니다.

2019-1-14  => null

2015-02-30 => null

2016-aaaa => null

2017-01 => null

2017-   => null 등


by 마농 [2019.11.19 16:46:01]

예시를 전부 - 로 들어 주셨는데 - 만 존재하나요? 다른거로 한다거나?, 구분자가 아예 없는 것은 없는지?
2019-1-14 은 월을 한자리만 입력해서 인정되는 않는 건가요? 인정해줘도 될 듯 한데요?
YYYY-MM-DD 형식을 벗어난 자료는 무조건 인정하지 않는다? --> 이렇게 판단하면 되는지?


by 불장작 [2019.11.19 16:47:10]

네 YYYY-MM-DD 형식을 벋어난것은 인정안하는것으로 표현하면 됩니다.


by jkson [2019.11.19 16:50:02]

날짜 테이블 만드시고 outer join 하셔서 조인 되면 그대로, 조인 안 되면 null로 하시든

deterministic function 만드셔서 to_date로 convert 되면 날짜 리턴, 안 되면(exception 발생) null return 하게 하세요.


by 마농 [2019.11.19 16:58:04]

네. 한가지 고정 형식이라면? 달력 테이블 미리 만들어 놓고 조인 하시면 됩니다.

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