복붙노트

[SQL] 값이 암시 적으로 날짜 형식으로 변환하는 방법을 이해 할 수 없습니다

SQL

값이 암시 적으로 날짜 형식으로 변환하는 방법을 이해 할 수 없습니다

내 NLS_DATE_FORMAT을 확인으로 DD-MM-RR입니다.

합리적으로 이해할 수있다 : "날짜 형식 길이가 충분하지 않은 입력 값 ORA-01840"날짜 열이 MYTABLE 고려할 때, 나는 다음과 같은 문을 실행하면 오류가 발생합니다.

insert into mytable values('10'); //Error: reason understandable

그럼 왜 입력 크기가 기본 날짜 형식의 크기보다 큰 명확하게 유효 문 따르고있다.

insert into mytable values('10AUGUST2016'); //reason not understandable

또한 여기에 내가 어떤 TO_DATE 기능을 사용하지 않은, 내가 암시 적 변환이 일어나고있는 것 같아요?

해결법

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

    1.변환 규칙이 추가 서식 규칙 허용 문자열 - 투 - 날짜 (다른 수정없이 적용되는). 그래서:

    변환 규칙이 추가 서식 규칙 허용 문자열 - 투 - 날짜 (다른 수정없이 적용되는). 그래서:

    그래서:

    SELECT TO_DATE( '10AUGUST2016', 'DD-MM-RR'    ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUGUST2016', 'DD-MON-RR'   ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUGUST2016', 'DD-MONTH-RR' ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUG2016',    'DD-MM-RR'    ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUG2016',    'DD-MON-RR'   ) FROM DUAL UNION ALL
    SELECT TO_DATE( '10AUG2016',    'DD-MONTH-RR' ) FROM DUAL;
    

    00 : 00 : 00 모든 날짜 2016-08-10T00를 생성합니다.

    당신은 FX 포맷 모델을 사용하여이 문제를 방지 할 수 있습니다

    그때:

    SELECT TO_DATE( '10-AUGUST-2016', 'FXDD-MM-RR'    ) FROM DUAL;
    

    숫자가 예상 된 위치 숫자가 아닌 문자가 발견되었고 정확한 패턴 일치가 발견되는 경우 (RR 여전히 RRRR 일치합니다 있지만) 만 일치합니다 : ORA-01858 : 제공합니다.

    예, 오라클은 암시 적으로 변환 할 TO_DATE ( '10AUGUST2016', NLS_DATE_FORMAT)를 사용하고 있습니다.

    당신이 사용하는 경우 :

    ALTER SESSION SET NLS_DATE_FORMAT = 'FXDD-MM-RR';
    

    그런 다음 삽입이 실패합니다.

  2. from https://stackoverflow.com/questions/43757561/unable-to-understand-how-value-converted-to-date-format-implicitly by cc-by-sa and MIT license