MySQLテーブルの列に格納された日付に日数を追加する方法
MySQLでは、テーブルの列に格納されている日付に日数を追加したい場合、2つの関数を使用できます。どちらの関数も、対象となる列名をINTERVALキーワードとともに引数として指定する必要があります。
DATE_ADD()関数を使う方法
DATE_ADD()関数の構文は以下のとおりです。
DATE_ADD(date, INTERVAL expression unit)
次の例では、テーブル「collegedetail」のデータを使用して、この関数の実際の動作を確認できます。
mysql> Select estb, DATE_ADD(estb, INTERVAL 10 DAY) from collegedetail; +------------+---------------------------------+ | estb | DATE_ADD(estb, INTERVAL 10 DAY) | +------------+---------------------------------+ | 2010-05-01 | 2010-05-11 | | 1995-10-25 | 1995-11-04 | | 1994-09-25 | 1994-10-05 | | 2001-07-23 | 2001-08-02 | | 2010-07-30 | 2010-08-09 | +------------+---------------------------------+ 5 rows in set (0.00 sec)
上記のクエリでは、「collegedetail」テーブルの「estb」列に格納されている各日付に対して、10日間が加算されています。たとえば「2010-05-01」は「2010-05-11」に変換され、月をまたぐ場合も自動的に正しく計算されることがわかります。
ADDDATE()関数を使う方法
ADDDATE()関数の構文は以下のとおりです。
ADDDATE(date, INTERVAL expression unit)
こちらも同様に、テーブル「collegedetail」のデータを使った実行例で動作を確認できます。
mysql> Select estb, ADDDATE(estb, INTERVAL 10 DAY) from collegedetail; +------------+--------------------------------+ | estb | ADDDATE(estb, INTERVAL 10 DAY) | +------------+--------------------------------+ | 2010-05-01 | 2010-05-11 | | 1995-10-25 | 1995-11-04 | | 1994-09-25 | 1994-10-05 | | 2001-07-23 | 2001-08-02 | | 2010-07-30 | 2010-08-09 | +------------+--------------------------------+ 5 rows in set (0.00 sec)
このクエリでも、「collegedetail」テーブルの「estb」列に格納された日付に10日間が追加されています。
2つの関数の違いについて
ADDDATE()は、第2引数にINTERVAL形式を指定した場合、DATE_ADD()の別名(シノニム)として機能します。そのため、どちらの関数を使用してもまったく同じ結果が得られます。用途や可読性に応じて使い分けるとよいでしょう。
-
MySQLで既存テーブルにcreated_atカラム(タイムスタンプ)を追加する方法
すでに作成済みのテーブルに「created_at」カラムを追加したい場合は、ALTERコマンドを使用します。この記事では、実際のSQL例とともに、タイムスタンプ型のカラムを追加してデフォルト値に現在時刻を自動設定する手順を解説します。1. サンプルテーブルの作成まず、動作確認用のテーブルを作成しましょう。以下は「created_at」カラムがまだ存在しないテーブルを作成するクエリです。mysql> create table formDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> E
-
MySQLでテーブル列の全日付レコードに1年を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、日付や日時の値に指定した期間を簡単に加算できます。この記事では、テーブル内のすべての日付レコードに1年を追加する方法を、具体的な手順とともに解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは、入社日を格納する JoiningDate カラムを持つテーブルを定義します。 mysql> create table DemoTable -> ( -> JoiningDate datetime -> ); Query OK, 0 rows affected (0.59