Данните в 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 )
За повече подробности вижте ръководството:http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00215