저는이 쿼리가 왜 작동하지 않는지 이해하기 위해 애를 썼습니다. 이 소유자의 모든 파티션 이름은 'R_DATE_20170831'형식의 값을가집니다. 그러나 아래 쿼리는 항상 오류를 반환합니다. ORA-01841 (전체) 연도는 -4713에서 +9999 사이 여야하며 0이 아니어야합니다. 각 날짜 부분을 개별적으로 표시 할 때 모두 해당 범위 내에 있습니다. 내 NLS_DATE_FORMAT은 'DD-MON-RR'값을 표시합니다. 이 날짜 비교 오류의 원인은 무엇입니까?
SELECT COUNT(*)
FROM dba_tab_partitions
WHERE table_owner = 'myId' AND
TO_DATE(SUBSTR(partition_name,INSTR(partition_name,'_',1,2) + 1),'YYYYMMDD') < TRUNC(SYSDATE) - 10;
나는 또한 SYSDATE-10의 주위에 적절한 마스크와 TO_DATE 퍼팅 시도했지만 여전히 오류가 발생했습니다. 어떤 통찰력? 고맙습니다!
당신이 지금 올바른 가지고 구문. 네가 잘못 된 행을 잡지 못하는 것 같아. "각 날짜 부분을 개별적으로 어떻게 표시합니까"? 예를 들어, date로 변환하는 SUBSTR 부분이 항상 8 자인지 여부를 먼저 테스트 했습니까? ** 또한 ** : 정확한 오라클 버전 (Subversion 포함 - 12.1.0.2.0 등)을 기재하십시오. Oracle 12.2에는 새로운 검증 기능 VALIDATE_CONVERSION이 있습니다.이 기능은 이러한 검증 작업을 신속하게 수행 할 수 있습니다. – mathguy