programing

SQL 오류: ORA-01861: 리터럴이 형식 문자열 01861과 일치하지 않습니다.

cafebook 2023. 3. 19. 18:29
반응형

SQL 오류: ORA-01861: 리터럴이 형식 문자열 01861과 일치하지 않습니다.

기존 테이블에 데이터를 삽입하려고 하는데 계속 오류가 발생합니다.

INSERT INTO Patient  
(
  PatientNo,
  PatientFirstName,
  PatientLastName,
  PatientStreetAddress,
  PatientTown,
  PatientCounty,
  PatientPostcode,
  DOB,
  Gender,
  PatientHomeTelephoneNumber,
  PatientMobileTelephoneNumber
)
VALUES 
(
  121, 
  'Miles', 
  'Malone', 
  '64 Zoo Lane', 
  'Clapham', 
  'United Kingdom',
  'SW4 9LP',
  '1989-12-09',
  'M',
  02086950291,
  07498635200
);

오류:

Error starting at line : 1 in command -
INSERT INTO Patient (PatientNo,PatientFirstName,PatientLastName,PatientStreetAddress,PatientTown,PatientCounty,PatientPostcode,DOB,Gender,PatientHomeTelephoneNumber,PatientMobileTelephoneNumber)
VALUES (121, 'Miles', 'Malone', '64 Zoo Lane', 'Clapham', 'United Kingdom','SW4 9LP','1989-12-09','M',02086950291,07498635200)
Error report -
SQL Error: ORA-01861: literal does not match format string
01861. 00000 -  "literal does not match format string"
*Cause:    Literals in the input must be the same length as literals in
           the format string (with the exception of leading whitespace).  If the
           "FX" modifier has been toggled on, the literal must match exactly,
           with no extra whitespace.
*Action:   Correct the format string to match the literal.

지금 SQL을 배우고 있는데 왜 이런 일이 계속 일어나는지 모르겠습니다만, 어떤 도움이라도 주시면 감사하겠습니다!

날짜 문자열 리터럴 교체 시도'1989-12-09'와 함께TO_DATE('1989-12-09','YYYY-MM-DD')

날짜에 사용하는 형식이 Oracle의 기본 날짜 형식과 일치하지 않습니다.

Oracle Database 기본 설치 시 기본 날짜 형식은 다음과 같이 설정됩니다.dd-MMM-yyyy.

함수를 사용하든가TO_DATE(dateStr, formatStr)또는 단순히 사용dd-MMM-yyyy날짜 형식 모델.

세션의 날짜 형식을 변경할 수도 있습니다.예를 들어 Perl DBI에서는 to_date() 함수를 사용할 수 없습니다.

ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'

기본 nls_date_format도 영구적으로 설정할 수 있습니다.

ALTER SYSTEM SET NLS_DATE_FORMAT='YYYY-MM-DD'

Perl DBI에서는 do() 메서드를 사용하여 다음 명령을 실행할 수 있습니다.

$db->do("ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD');

http://www.dba-oracle.com/t_dbi_interface1.htm https://community.oracle.com/thread/682596?start=15&tstart=0

ORA-01861: literal does not match format string

이 문제는 형식 문자열과 함께 리터럴을 입력하려고 했지만 형식 문자열의 길이가 리터럴과 동일하지 않았기 때문에 발생합니다.

다음의 변경을 실시하면, 이 문제를 해결할 수 있습니다.

TO_DATE('1989-12-09','YYYY-MM-DD')

일반적으로 TO_DATE 함수, TO_TIMESTamp 함수, TO_CHAR 함수 및 이와 유사한 함수를 사용하는 경우 지정한 형식 문자열과 일치하는지 확인하십시오.

dd-mon-yyy 형식으로 시도해 보십시오. 예를 들어 02-08-2016은 '08-2016' 형식이어야 합니다.

올바른 날짜 형식을 제공한 경우 올바르게 작동해야 합니다. 삽입 값에 올바른 날짜 형식을 지정했는지 다시 확인하십시오.

yyy-mm-dd hh:mm:ss.ms과 같은 날짜 저장을 시도합니다(예: 1992-07-01 00:00:00.0).

언급URL : https://stackoverflow.com/questions/22542882/sql-error-ora-01861-literal-does-not-match-format-string-01861

반응형