2011-12-14 12 views
10

私は、フォーマットYYYY-MM-DDにMYSQL - 2011年に2020年からの日付の年を変更

を日付の束を持っている。しかし、私は2020-MM-DDで一年中

を持って、私はそれを変更したいです2011-MM-DD

どうすればこの問題を解決できますか?

+0

問題の列のデータ型は? –

+0

列のデータ型は、 – Chinmay

+0

です。[This](http://stackoverflow.com/questions/14491906/changing-year-in-mysql-date)one is simple solution –

答えて

13
UPDATE YourTable 
    SET YourDateColumn = SUBDATE(YourDateColumn, INTERVAL 9 YEAR); 
+0

お返事ありがとうございます。私はちょうどそれを試してみましたが、それは実際に1年に1つ追加しました。つまり、2020年から2021年に私の日付を作りました。 – Chinmay

+0

申し訳ありませんが、私は質問を誤って入力しました。実際には、私の日付は2020-MM-DDの形式であり、それを2010-MM-DDに変換したいのです。大変申し訳ございません。 – Chinmay

+1

@ChinmayMurugkar 2020年から2011年に行くには、 'SUBDATE(YourDateColumn、INTERVAL 9 YEAR)'を使用してください。これを反映する答えを編集しました。 –

5

使用ADDDATE(old_date, INTERVAL -9 YEAR)

+0

返信ありがとうございます。申し訳ありませんが、私は質問を誤って入力しました。実際には、私の日付は2020-MM-DDの形式であり、それを2010-MM-DDに変換したいのです。私はとても残念です – Chinmay

+0

私はこれを反映するために私の答えを編集しました。答えは@Joe Stefanelliのものと若干異なりますが、同じように動作します。 – Jason

2
UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YourDateColumn >= '2010-01-01' 
AND YourDateColumn <= '2010-12-31'; 

あなたのテーブルがダウンし、日付フィールドにインデックスを持っていない場合、あなたはこれで逃げることができます:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL 1 YEAR) 
WHERE YEAR(YourDateColumn) = 2010; 

を2020年のあなたの日付の問題を解決するには2021年にこれを実行:

UPDATE YourTable 
SET YourDateColumn = ADDDATE(YourDateColumn, INTERVAL -1 YEAR) 
WHERE YEAR(YourDateColumn) = 2021; 

BTW私はJoe Stefanelliの元のコードをコピーして以来、彼の+1!

1

私はあなたにも、「更新」を積極的に速くSUBDATE機能付き声明よりも、私はにおよそ10mlの液体フッ化水素を圧入それを取っている間、合理的に高速であると考えることができる(質問への更なる観光客のために)を追加したいと思います。 1時間で2.3兆行に影響を与えるSUBDATEは半分の時間を費やしました。

UPDATE Table SET DateTimeField = SUBDATE(DateTimeField, INTERVAL -x YEAR); 

ここで、xは新しい年の値として追加する負の数です。 正直言って私はこれがなぜ起こるのか無視しますが、うまくいきます。

関連する問題