[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.변환 규칙이 추가 서식 규칙 허용 문자열 - 투 - 날짜 (다른 수정없이 적용되는). 그래서:
변환 규칙이 추가 서식 규칙 허용 문자열 - 투 - 날짜 (다른 수정없이 적용되는). 그래서:
그래서:
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';
그런 다음 삽입이 실패합니다.
from https://stackoverflow.com/questions/43757561/unable-to-understand-how-value-converted-to-date-format-implicitly by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 포스트 그레스는 - 어디에서 (목록) - 열이 존재하지 않습니다 (0) | 2020.07.19 |
---|---|
[SQL] 주의 : 정의되지 않은 인덱스 [중복] (0) | 2020.07.18 |
[SQL] 어떻게 VBA를 사용하여 서식있는 텍스트 메모에 액세스 테이블에 텍스트 필드를 변환하는 (0) | 2020.07.18 |
[SQL] MS 액세스 날짜 트리거 에뮬레이션 (0) | 2020.07.18 |
[SQL] 하나에 동일한 데이터베이스를 병합 (0) | 2020.07.18 |