[MySQL] UPDATEで時間を加算・減算する

公開

スポンサーリンク

MySQLでDatetime型カラムに記録された日時をUPDATE文で変更する方法についての解説です。

カラムに”2013-07-01 00:00:00″と記録されていたとします。これを1時間前に修正する場合は以下のSQL文を実行します。

UPDATE table_name SET 'target_column' = (`target_column` - INTERVAL 1 HOUR);

これで、全てのtarget_columnに記録されていた時間が、1時間前に変更されます。上記の例では”2013-07-01 00:00:00″は”2013-06-30 23:00:00″に変更されます。1時間後に変更する場合は(`target_column` - INTERVAL 1 HOUR)の-を+に変えます。

以下は時間以外の、秒単位や日単位の時間変更についての例です。

UPDATE table_name SET 'target_column' = (`target_column` + INTERVAL 1 SECOND);//1秒後に変更
UPDATE table_name SET 'target_column' = (`target_column` + INTERVAL 1 MINUTE);//1分後に変更
UPDATE table_name SET 'target_column' = (`target_column` + INTERVAL 1 DAY);//1日後に変更
UPDATE table_name SET 'target_column' = (`target_column` + INTERVAL 1 WEEK);//1週間後に変更
UPDATE table_name SET 'target_column' = (`target_column` + INTERVAL 1 MONTH);//1カ月後に変更
UPDATE table_name SET 'target_column' = (`target_column` + INTERVAL 1 MINUTE + INTERVAL 30 SECOND );//1分30秒後に変更

あとは変更する時間を調整し、WHERE句を付け加えれば目的は果たせると思います。

なお、カラムの日時が1月30日の時に+ INTERVAL 1 MONTHで1か月後に変更すると2月28日になります。+ INTERVAL 30 DAYなら3月1日になります。このあたりは注意が必要でしょう。

スポンサーリンク


Comment