2016-05-09 11 views
-1

私は2つの異なる日付フォーマットの2つのテーブルを持っており、それらを比較する必要があります。 Q_RATE_DATEフィールドを変換しようとしています。 '27-JUN-12'から20120627に変更するにはどうすればよいですか?日付をYYYYMMDDに変換するにはどうすればよいですか?

私が試した:

TO_DATE(Q_RATE_DATE, 'DD-MON-YY', 'YYYYMMDD') 

運、私が間違って何をやっていますか?

TO_CHAR(DATE_FIELD, 'YYYYMMDD') 

をバック日にそのテキストを再変換するには:テキストとしてレンダリングするために

+10

日付ドン、その場合には、正しい解決策は

to_char(to_date(Q_RATE_DATE, 'dd-mon-yy'), 'yyyymmdd') 

です固有のフォーマットを持っています。少なくとも1つのテーブルは実際の日付ではなく文字列として日付を保持していますが、これは悪い習慣です。 "運がいい"というのは役に立たない。とにかく実際の日付(または両方の列のデータ型)と、「日付」列のいずれかが索引付けされているかどうか、および関連するボリュームを表示する必要があります。あなたは*それらを日付として比較したいと思うかもしれませんが、それは必ずしも最も効率的なアプローチではありません。 –

答えて

0

実際には両方の列が文字データ型であるように私には思える - それ以外の場合は、の話をする意味がありません「形式。」 (。 - 実際には正解がDATEデータ型で日付を格納することですが、OPがそのを制御することはできません完全に可能ですまあ)

6

TO_DATE(TO_CHAR(DATE_FIELD, 'YYYYMMDD'),'YYYYMMDD') 

編集アレックス・プールの優れたコメントに基づいて。ある日付が文字列として格納され、もう一方の日付が日付であることが分かった場合は、上記の2つのクエリを組み合わせて使用​​する必要があります。日付にテキスト文字列を変換するには

TO_DATE(STR_DATE_FIELD, 'YYYYMMDD') 
関連する問題