Данните в COL1 са в дд-пн-гг
Не, не е. A DATE колонане имат всякакъв формат. Преобразува се (неявно) в това представяне от вашия SQL клиент само когато го покажете.
Ако COL1 наистина е DATE колона с помощта на to_date() върху него е безполезен, защото to_date() преобразува низ в DATE.
Трябва само to_char(), нищо друго:
SELECT TO_CHAR(col1, 'mm/dd/yyyy')
FROM TABLE1
Това, което се случва във вашия случай, е извикването на to_date() преобразува DATE в символна стойност (прилагайки NLS формат по подразбиране) и след това преобразувайки я обратно в ДАТА. Поради това двойно имплицитно преобразуване част от информацията се губи по пътя.
Редактиране
Значи направихте тази голяма грешка да съхраните ДАТА в колона със знаци. И затова сега получавате проблемите.
Най-доброто (и за да бъда честен:единствено разумно) решение е да преобразувате тази колона в DATE . След това можете да конвертирате стойностите във всяко повторно представяне, което искате, без да се притеснявате за имплицитно преобразуване на тип данни.
Но най-вероятно отговорът е „Наследих този модел, трябва да се справя с него " (винаги е така, очевидно никой никога не е отговорен за избора на грешен тип данни), тогава трябва да използвате RR вместо YY :
SELECT TO_CHAR(TO_DATE(COL1,'dd-mm-rr'), 'mm/dd/yyyy')
FROM TABLE1
трябва да свърши работа. Имайте предвид, че също промених mon до mm като вашият пример е 27-11-89 който има число за месеца, а не „дума“ (като NOV )
За повече подробности вижте ръководството:https://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00215