私のMysqlデータベースには、一連の日付があります。データベース内のすべての日付を3年ずつ増やすにはどうすればよいですか?
たとえば、現在の日付は2001年1月2日です。
日付を3年増やしたい:2004年1月2日
これを試して -
UPDATE TABLE set fieldname = DATE_ADD( fieldname, INTERVAL 3 YEAR )
詳細については、dates
このリンクを確認してください:-
ワーキングフィドル - http://sqlfiddle.com/#!2/9c669/1
編集
このソリューションは、日付型がVARCHARであり、日付の構造が次のように更新されます-2 January 2001
2 January 2004
の間隔で日付を更新します3
VARCHAR
日付を処理する最善の方法は、日付をsに保存する代わりに日付データ型 (タイムスタンプ、日時など) を使用することですが、
テスト済みコード --
UPDATE date
SET `varchardate`= DATE_FORMAT(DATE_ADD( str_to_date(`varchardate`, '%d %M %Y'), INTERVAL 3 YEAR ) , '%d %M %Y')
以下のクエリは、日付列を更新し、日付形式にも変更します。
update date1 set dates =
DATE_ADD( (str_to_date(concat(
SUBSTRING_INDEX( dates, ' ', 1 ),'-',
Substring(SUBSTRING_INDEX( SUBSTRING_INDEX( dates, ' ', 2 ) , ' ', -1 ),1,3) ,
'-',
SUBSTRING_INDEX( dates, ' ', -1 )),'%d-%M-%Y')), INTERVAL 3 YEAR )
また
2 番目のクエリは、年を 3 だけ更新するだけです。
update date1 set dates =
concat( SUBSTRING_INDEX( dates, ' ', 2 ) , ' ',
(SUBSTRING_INDEX( dates, ' ', -1 ) +3) )
date_add 関数を確認してください。