Wenn start_date
NULL ist, wird keine Ausnahme ausgelöst.
select to_date( null, 'mm/dd/yyyy' )
from dual
ist eine vollkommen gültige SQL-Anweisung, die NULL zurückgibt.
Der Fehler, den Sie erhalten, deutet stark darauf hin, dass zumindest einige der Zeilen im start_date
Spalte sind nicht wirklich Zeichenfolgen in dem Format, das Sie erwarten, oder die ungültigen Datumsangaben zugeordnet sind (z. B. die Zeichenfolge „35.13.2007“). Sie können eine Funktion schreiben, die testet, ob eine Zeichenfolge in ein Datum konvertiert werden kann, und entweder das konvertierte Datum oder NULL zurückgibt. Sie können das dann anstelle von to_date
verwenden .
CREATE OR REPLACE FUNCTION my_to_date( p_str IN VARCHAR2,
p_format IN VARCHAR2 )
RETURN DATE
IS
BEGIN
RETURN to_date( p_str, p_format );
EXCEPTION
WHEN OTHERS
THEN
RETURN NULL;
END;
und verwenden Sie dann my_to_date
statt to_date
. Das sollte den Fehler beseitigen, den Sie erhalten. Wahrscheinlich möchten Sie die Daten jedoch bereinigen, um die ungültigen Zeichenfolgen zu entfernen.