oracle date type 질문있습니다!! 0 2 1,666

by 열정가이 [Oracle 기초] date [2017.12.03 19:48:09]


만약

create table test ( day date );

insert into test values('19930806');

이렇게 하면 입력이 되는 이유가 뭔가요?

저는 TO_DATE('19930806','YYYYMMDD')로 해야 한다고 알고있는데 왜그런가요? 이게 묵시적 형변환인가요?

by 그로밋 [2017.12.04 02:50:16]

오라클 디비  초기화 매개 변수들 (init.ora parameters)중에 nls_date_format이 있읍니다.  사용하시는 디비에서, nls_date_format이 YYYYMMDD로 정해져 있을 것입니다.

만약 날짜 포맷 변환을 지정하지 않으면, nls_date_format 에 정해져 있는 포맷으로 묵시적 변환이 시도 됩니다.  정해져있는 포맷이 원하는 포맷과 다르면, 틀린날짜가 들어가거나 에러가 발생합니다.  따라서, 업무용으로 개발하는 코드에는, to_date를 써서 변환을 지정하는 것이 좋읍니다.

참고로, 세션내에서 날짜 포맷을 지정하려면, 예를들어, 다음과 같이 수행 하면됩니다.

alter session set nls_date_format='YYYYMMDD';


by 마농 [2017.12.04 08:53:33]

묵시적 형변환 입니다.
사용하는 환경에 따라 에러가 날 가능성이 큽니다.
오라클 기본 세팅에도 영향을 받지만, 사용하는 툴(토드/sqlplus)에도 영향을 받습니다.
명시적으로 형변환을 해주시는게 바람직합니다.

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