COL1のデータはdd-mon-yyにあります
いいえ、ちがいます。 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に変換し直します。この二重の暗黙の変換により、途中で一部の情報が失われます。
編集
したがって、日付を文字列に格納するという大きな間違いを犯しました。そしてそれがあなたが今問題を抱えている理由です。
最良の(そして正直に言うと、賢明な)解決策は、その列を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