Регулярные выражения - ваш друг здесь:
WITH cteDate AS (SELECT TO_DATE('01/02/2020', 'DD/MM/YYYY') AS SOME_DATE FROM DUAL)
SELECT TO_CHAR(SOME_DATE, 'MM/DD/YYYY') AS FORMATTED_SOME_DATE,
REGEXP_REPLACE(TO_CHAR(SOME_DATE, 'MM/DD/YYYY'), '0([0-9])/', '\1/') AS FIXED_DATE
FROM cteDate
Вышеприведенное возвращает
FORMATTED_SOME_DATE FIXED_DATE
02/01/2020 2/1/2020
Чтобы объяснить, что здесь происходит: поисковое выражение '0([0-9])/'
говорит: «Ищите подстроку» который начинается с символа «0», сопровождается одним символом в диапазоне от «0» до «9» и заканчивается символом «/». Считайте символ в диапазоне от «0» до «9» как group '.
Выражение замены '\1/'
говорит: «Замените то, что вы нашли в строке поиска, первым сгруппированным выражением (есть только одно), за которым следует символ sla sh».