Hvis start_date
er NULL, ingen undtagelse er kastet.
select to_date( null, 'mm/dd/yyyy' )
from dual
er en perfekt gyldig SQL-sætning, der returnerer NULL.
Den fejl, du får, antyder kraftigt, at i det mindste nogle af rækkerne i start_date
kolonnen er faktisk ikke strenge i det format, du forventer, eller den tilknyttede ugyldige datoer (dvs. strengen '13/35/2007'). Du kan skrive en funktion, der tester for at se, om en streng kan konverteres til en dato og returnere enten den konverterede dato eller en NULL. Du kan derefter bruge det i stedet for to_date
.
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;
og brug derefter my_to_date
i stedet for to_date
. Det burde fjerne den fejl, du får. Du vil sandsynligvis gerne rydde op i dataene for at slippe af med de ugyldige strenge.