[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日になります。このあたりは注意が必要でしょう。
スポンサーリンク
MySQLカテゴリーの投稿
- [MySQL] 数値を範囲で区切って集計
- [MySQL] UNIONとJOINを組み合わせて使う
- [MySQL] datetime型カラムを時間単位で集計する
- [MySQL] カラム内の指定した文字列を置換する
- PHP、MySQL、CRONが使える無料レンタルサーバー「000.webhost.com」
- [MySQL] 日時のデータをもとに日別のデータを集計する
- [MySQL] カラム内の文字列の一部を一括置換する
- [MySQL][php] updateしたIDを知りたい場合はLAST_INSERT_ID()を使う
- MySQLバージョン4.x以前からエクスポートしたsqlファイルはTYPE = MyISAM を ENGINE = MyISAM に変更する
- さくらインターネットのMySQLを4.0.6から5.1にアップグレード