Firstly, a suggestion to you , don't use a VARCHAR2 / CHAR
type for DATEs in database.
You may create a function using TO_DATE
CREATE OR REPLACE FUNCTION validmmddyyyy (p_str IN VARCHAR2)
RETURN NUMBER
AS
V_date DATE;
BEGIN
V_Date := TO_DATE (p_str, 'MM/DD/YYYY');
RETURN 1;
EXCEPTION
WHEN OTHERS
THEN
RETURN 0;
END;
select validmmddyyyy('09/12/2018') from DUAL;
1
select validmmddyyyy('13/12/2018') from DUAL;
0
select validmmddyyyy('2018/12/01') from DUAL;
0
Use your query like,
select birth_date FROM table_name where validmmddyyyy(birth_date) = 0
If you are lucky enough to use Oracle 12c R2, you could make use of DEFAULT..ON..CONVERSION ERROR
clause of TO_DATE
SELECT *
FROM table_name
WHERE TO_DATE (birth_date default null on conversion error,'MM/DD/YYYY') IS NULL