Ich habe gekämpft, um zu verstehen, warum diese Abfrage nicht funktioniert. Alle Partitionsnamen für diesen Besitzer haben Werte im Format 'R_DATE_20170831'. Aber die Abfrage unten gibt immer einen Fehler zurück ORA-01841 (voll) Jahr muss zwischen -4713 und +9999 liegen, und nicht 0 sein. Wenn ich jedes Datum Teil einzeln anzeigen, sind sie alle in diesem Bereich. Mein NLS_DATE_FORMAT zeigt einen Wert 'DD-MON-RR'.Was verursacht diesen Datumsvergleichsfehler?
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;
Ich habe auch versucht, um die sysdate-10 eine TO_DATE mit geeigneten Masken setzen, aber immer noch den Fehler. Irgendeine Einsicht? Vielen Dank!
Die Syntax, wie Sie es haben jetzt korrekt ist. Ich vermute, Sie fangen die fehlerhaften Zeilen nicht auf. Wie "zeige ich jedes Datum einzeln an"? Haben Sie beispielsweise zuerst überprüft, ob der SUBSTR-Teil, den Sie konvertieren, immer aus acht Zeichen besteht? ** Auch **: Bitte geben Sie Ihre genaue Oracle-Version (einschließlich Subversion - wie 12.1.0.2.0); In Oracle 12.2 gibt es eine neue Funktion, VALIDATE_CONVERSION, die diese Überprüfungen schnell durchführen kann. – mathguy