2016-07-22 21 views
0

DBのインポート中に、ちょっと混乱しました。だから、私は日付型の日付列を持っていますが、年と日は間違った場所にあります。その日は年の列に現れ、mysqlは年として自動的にフォーマットされます...さらに悪化するもの。私が実際にしたいUPDATE列が、私が見てSELECTで多くの例を試してみましたのでご注意DATE FORMAT%d-%m-%y TO%y-%m-%dのmysql UPDATEテーブルの値

は、私はそう

dates(yyyy-mm-dd) 
2012-05-30 
2013-06-21 
2013-12-12 

Plsのようにそれらをしたい

dates(dddd-mm-yy) 
2030-05-12 
2021-06-13 
2012-12-13 

の下のような表の値を持っています

Thnxです。

+0

この列はどのようなタイプですか? 'varchar'? – Blank

+0

@JPG私のコラムはDATEタイプです –

+0

@JPG少し質問を編集しました。 Thnxは事前に –

答えて

0

これは「解決策」と分類できますか、多分もっとうまくいくかどうかはわかりませんが、それは私のために完璧に機能しました。

thisを読んだ後、私は私の問題は、私は形式DD-MM-YYで私の日付をインポートしようとしたときに開始することを実現し、したがって、MySQLは年に私の一日と仮定し、yydd-MM-YYとしての私の日付を提示

私の日付はyydd-MM-YYとしてフォーマットされたと私は別々にあるため、それは私のように私の日付の書式を助けたのMySQLの目に

UPDATE table_name 
SET DATES = DATE_FORMAT(DATES, '%Y-%m-%d'); 

このクエリが実行されたクエリを試みたが、表に変更はありませんyyyy-mm-dd私のDBをインポートしたときからですが、私の日付はyydd-mm-ddになります

だから私は、私はようなクエリをしようと思った。 MySQLは日と年を切り替え

UPDATE table_name 
SET DATES = DATE_FORMAT(DATES, '%d-%m-%y'); 

この方法では、その後、YYYY-MM-DDとしての私の日付を提供し、非常に紛らわしいものは、MySQLは、日付を処理する方法が、2030年5月12日のような日の最終結果は2012年です-05-30。

0

substring()およびconcat()を使用して、任意のものを連結することができます。以下はあなたの参照のためのステートメントです(テーブルはtb_test、カラム名はcol_date)。

update tb_test set col_date = concat('20',substring(col_date,7,2),'-',substring(col_date,4,2),'-',substring(col_date,1,2)); 
+0

素敵な試み。しかし、私はここに非常に大きなDBをいじっています。それらの日付のいくつかは1990年に戻る –

+0

私は2つのクエリソリューションを想像していました。 1つは日と年の位置を切り替え、もう1つはmysqlに残りの部分を自動的に生成するように指示します。私はそのようなことがスクリプトthoで行われるだろうと思った。 –

+0

列の型が日付の場合、DATE_FORMAT(date_col、 '%y-%m-%d')を使用して簡単に変換できます。更新された日付の値を格納するために別の列を使用することをお勧めします。たとえば、次のようにします。update tb_test set new_date_col = DATE_FORMAT(date_col、 '%y-%m-%d'); – King

関連する問題