COL1のデータはdd-mon-yyにあります
いいえ、ちがいます。DATE
列には形式がありません。表示するときに、SQLクライアントによってその表現に(暗黙的に)変換されるだけです。
COL1が実際にDATE
使用されている列である場合、文字列をDATEに変換するto_date()
ため、COL1は役に立ちません。to_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
トリックを行う必要があります。また、例として、「単語」(NOVなど)ではなく、その月の数字が含まれるように変更mon
したことに注意してください。mm
27-11-89
詳細については、マニュアルを参照してください:http: //docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00215