私が持っている日付列があり、varchar2
それらの値を変換したいYYYY-MM-DD
DATE
7/26/2013
7/29/2013
8/1/2013
8/4/2013
7/28/2013
7/31/2013
8/3/2013
7/30/2013
8/5/2013
7/25/2013
8/2/2013
8/6/2013
7/27/2013
VARCHAR
したがって、別の方法で表示するには、最初に文字列を日付に変換してから文字列に戻す必要があります
すべての「日付」が正しい (そして同じ) 形式であることが確実な場合は、次のように動作するはずです。
select to_char(to_date(date, 'mm/dd/yyyy'), 'yyyy-mm-dd')
from the_table;
しかし、1 つ以上の行に異なる形式の日付が含まれているため、エラーが発生しても驚かないでしょう。列をDATE
最初からタイプとして定義していた場合、起こり得なかったことです。
その列を実際の列に変更することを真剣に検討する必要がありDATE
ます。
ところで:DATE
そのような列の恐ろしい名前です。これは予約語であり、その列に実際に格納されているもの (「開始日」、「終了日」、「生年月日」、「期日」など) については何も伝えません。 )
文字列をdate
変換してからchar
、予想される形式に変換する必要があります
select TO_CHAR(TO_DATE(datecol, 'MM/DD/YYYY'),'YYYY-MM-DD')
from your_table
select to_char(TO_DATE("Date", 'MM/DD/YYYY'),'yyyy-mm-dd')
from Table1
REGEXP_REPLACE 関数を使用して文字列を操作するか、to_date および to_char を使用して文字列を日付に変換し、別の形式で文字列に戻すことができます。