Better way of handling incorrect date format in a column with "char(10)" data type / TRY_CONVERT equivalent in PLSQL
TRY_CONVERT is a function that is called for every record, how is that different?
Below works since 12.2:
SQL&gt; alter session set nls_date_format='YYYY/MM/DD';

Session altered.

SQL&gt; select cast('2021/03/07' as date default date'2012-01-01' on conversion error) from dual;

CAST('2021
----------
2021/03/07

SQL&gt; select cast('X021/zz/99' as date default date'2012-01-01' on conversion error) from dual;

CAST('2021
----------
2012/01/01

SQL&gt; select to_date('X021/zz/99' default date'2012-01-01' on conversion error, 'YYYY/MM/DD') from dual;

TO_DATE('X
----------
2012/01/01

SQL&gt;

On your version, you can use your function.