WITH t AS ( SELECT '20200725' i_dt FROM dual UNION ALL SELECT '01.Mar.2023' FROM dual UNION ALL SELECT '10/01/2022' FROM dual ) SELECT i_dt , DECODE(LENGTH(i_dt) , 8, i_dt , 10, TO_CHAR(TO_DATE(i_dt, 'mm/dd/yyyy'), 'yyyymmdd') , 11, TO_CHAR(TO_DATE(i_dt, 'dd.Mon.yyyy', 'nls_date_language=american'), 'yyyymmdd') ) o_dt FROM t ;