복붙노트

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

SQL

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을 배우고 일이 계속 그냥 확실하지 왜, 어떤 도움은 매우 극명하게 될 것이다!

해결법

  1. ==============================

    1.TO_DATE와 날짜 '1989년 12월 9일'에 대한 문자열 리터럴을 교체하십시오 ( '1989년 12월 9일', 'YYYY-MM-DD')

    TO_DATE와 날짜 '1989년 12월 9일'에 대한 문자열 리터럴을 교체하십시오 ( '1989년 12월 9일', 'YYYY-MM-DD')

  2. ==============================

    2.또한 세션의 날짜 형식을 변경할 수 있습니다. 이것은 TO_DATE () 함수를 사용할 수없는 펄 DBI에, 예를 들면, 유용

    또한 세션의 날짜 형식을 변경할 수 있습니다. 이것은 TO_DATE () 함수를 사용할 수없는 펄 DBI에, 예를 들면, 유용

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

    영구적으로 기본 NLS_DATE_FORMAT을뿐만 아니라 설정할 수 있습니다 :

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

    펄 DBI에서는 이러한 계십니까와 명령 () 메소드를 실행할 수 있습니다 :

    $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

  3. ==============================

    3.당신이 날짜에 사용하는 형식은 오라클의 기본 날짜 형식과 일치하지 않습니다.

    당신이 날짜에 사용하는 형식은 오라클의 기본 날짜 형식과 일치하지 않습니다.

    오라클 데이터베이스의 기본 설치 DD-MMM-YYYY에 기본 날짜 형식을 설정합니다.

    어느 함수 TO_DATE (dateStr, formatStr)를 사용하거나 DD-MMM-YYYY 날짜 형식 모델을 사용합니다.

  4. ==============================

    4.이런 식으로 날짜를 저장하려고 YYYY-MM-DD시 : 분 : ss.ms 예를 들어 : 1992년 7월 1일 00 : 00 : 00.0 그게 나를 위해 일한

    이런 식으로 날짜를 저장하려고 YYYY-MM-DD시 : 분 : ss.ms 예를 들어 : 1992년 7월 1일 00 : 00 : 00.0 그게 나를 위해 일한

  5. ==============================

    5.

    ORA-01861: literal does not match format string
    

    당신이 형식 문자열과 함께 문자를 입력하려고 노력하기 때문에 발생하지만, 형식 문자열의 길이는 문자 같은 길이 아니 었습니다.

    당신은 변경 다음 수행하여이 문제를 극복 할 수 있습니다.

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

    6.형식 '08 -FEB-2016 '에 있어야 예를 2016년 2월 8일를 들어, DD-월-YYYY와 같은 형식을보십시오.

    형식 '08 -FEB-2016 '에 있어야 예를 2016년 2월 8일를 들어, DD-월-YYYY와 같은 형식을보십시오.

  7. ==============================

    7.당신이 적절한 날짜 형식을 제공하는 경우는 삽입 값을 정확한 날짜 형식을 준 경우 일단 제발 다시 검사를 작동합니다

    당신이 적절한 날짜 형식을 제공하는 경우는 삽입 값을 정확한 날짜 형식을 준 경우 일단 제발 다시 검사를 작동합니다

  8. from https://stackoverflow.com/questions/22542882/sql-error-ora-01861-literal-does-not-match-format-string-01861 by cc-by-sa and MIT license