오라클 DATE TYPE FORMAT 관련 질문 0 4 2,552

by 엠컨 [DB 기타] [2017.05.22 20:34:40]


oracle date type 관련 질문드립니다.

 

기존 프로그래밍 되어있는 소스가

 

TO_CHAR 과 TO_DATE 가 비교하는 구문이 있습니다.

 

원래는 쓰면 안되는거 같지만 저런 코딩이 많습니다.

 

 

이번에 DB를 재설치 했는데 DATE 타입이 맞지 않는지 날짜조건에 전체 데이터가 다 나옵니다.

 

 

NLS_DATE_FORMAT 도 아래와 같이 변경 시도 해보았는데 되지 않았습니다.

 

alter system set nls_date_format ='YYYY-MM-DD' scope = both; 

 

   

토드에서는 데이터가 맞게 나오고 DB 서버에 있는 SQLPLUS에서 쿼리 실행시에도 맞게나오는데

 

제가 만든 프로그램에서만 날짜 조건식이 이상하게 되어 많은 양의 데이터가 나와 버립니다.

 

 

 

 

INSERT 문에서도 

 

DATE 타입 컬럼에 '17.05.22' 이렇게 넣으면

 

DB에 자동으로 2017-05-22 가 들어갔었는데 현재 새로 설치한 디비에는 0017-05-22 가 들어가 있습니다.

 

어떤걸 변경 해줘야 하나요?

by 마농 [2017.05.23 08:19:59]

잘못된 프로그램을 고치는게 정답입니다.
모호한 17.05.22 보다는 2017.05.22 를 사용해야 합니다.
포멧 지정만으로 해결될 문제는 아닙니다. 근본적인 문제를 해결해야죠.
일단은, yyyy 대신 rrrr 을 사용해 보세요.


by 엠컨 [2017.05.23 10:57:28]

답변감사합니다.

일단 쿼리를 수정해놓았는데 rrrr도 테스트 해보겠습니다


by 엠컨 [2017.05.23 11:19:42]

혹시 하나만 더 질문드리자면

클라이언트인 제가 쓰고 있는 컴퓨터의 토드나 서버의 sqlplus에서 쿼리를 쓰면 잘 나오는데 프로그램에서만 날짜 형식이 다른거 같은데 어디서 rrrr로 바꿔줘야 할지 궁금합니다.


by 마농 [2017.05.23 11:26:54]

프로그램과 쿼리를 정상적으로 수정했다면?
클라이언트 환경에 영향을 받지 않습니다.
해당 클라이언트 툴?, 엔진? 웹서버? 등에 설정하는 곳이 따로 있지 않을런지요?
DB 명령어로 제어하는 방법은.
ALTER SESSION SET nls_date_format='rr-mm-dd';
결론은 클라이언트마다 다른 환경을 고치는 것 보다는
환경에 영향을 받지 않도록 프로그래밍하는 것이 좋습니다.

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