본문 바로가기
개발일지/임시카테고리

oracle developer ERROR ORA-01861: literal does not match format string (근본적 셋팅 수정)

by 다니엘의 개발 이야기 2022. 9. 20.
320x100

ORA-01861: literal does not match format string

에러가 윈도우 11기반, 최신버전의 oracle sql developer를 사용할때는

INSERT INTO tStaff VALUES ('김유신','총무부','남','2000-2-3','이사',420,88.8);

이것에 대해서 전혀, 전혀 문제가 없이 insert 되었다.

 

하지만 지금은 차후 하둡을 고려해서 자바 8 version이 include된 좀 20대 버전을 사용해서 그런지

초기 언어 설정도 영어로 되어었다.

그리고 새로 만들어간다는 마음가짐으로

INSERT INTO tStaff VALUES ('김유신','총무부','남','2000-2-3','이사',420,88.8);

명령을 넣자마자

ORA-01861: literal does not match format string

에러가 뜨는게 아니겠는가.

 

구글링을 해봤더니 하나같이 서로서로 불펌해왔다곤 하지만 어처구니가 없었다.

딸랑 1줄의 입력문만 입력해서 해결이 되는거라면 유의미한 결과였겠지만

학습을 하는 사람의 입장에서, 10개 이상의 데이터만 넣으려고 해도 TO_DATE 를 붙여주는 노가다를

언제 일일이 하고 있겠냐;

 

그래서 한글구글링, 영문구글링, stackoverflow 순으로 몇가지 자료를 찾아보았다.

 


ORA-01861: literal does not match format string 에러가 뜰때

한줄만 입력 원할때

DATE type에 해당하는 날자를

TO_DATE('2000-09-14','YY-MM-DD')

이런식으로 입력해주어야 한다.


근본적인 환경설정을 바꾸는 이유와 방법

 

TO_DATE를 말하는 사람들도 전체적으로 알고 말하는건지, 남의것을 배껴다 쓰기에 바쁜건지 하나같이

NLS에 문제가 있다고 지적을 하였다.

하지만 이 NLS를 바꾸는 방법에 대해 언급한 사람은 하나도 없더라;

한글로 검색하면 뻘소리만 나와서 영문으로 검색해보니 NLS를 바꾸는 방법을 찾았다.

 

나도 NLS는 모른다. 어차피 여기 들어온 사람도 그걸 알고싶어서 온건 아닐거라고 본다.

한글 기준

도구 - 환경설정 - 데이터베이스 - NLS

영문 기준

tools - preference - database - NLS

 

에 들어와서 데이터포맷을 나는 YY-MM-DD로 변경해주었다.

그 외적으로는 decimal seperator는 .

Group Separator는 ,

로 셋팅이 되어있어야 한다고 하는데

나는 기본셋팅이 이거였다.

 

 

끗-

 

아니 그나저나 진짜 생각할수록 어이가 없네;

NLS가 필요하단걸 표면적으로나마 이해를 했으면 그걸 해결할 방법을 제시하는게 먼저 아닌가;

300x250