MySQLでテーブルの日付値に30日を追加する方法
MySQLのテーブルに格納された日付値に30日を追加したい場合は、UPDATEコマンドとADDDATE()関数を組み合わせることで実現できます。
基本構文
UPDATE テーブル名 SET 日付カラム名=ADDDATE(日付カラム名, INTERVAL 30 DAY);
なお、ADDDATE()はDATE_ADD()関数の別名(エイリアス)であり、どちらを使っても同じ結果が得られます。「INTERVAL 30 DAY」は「30日間」という単位を明示的に指定する記述です。
動作確認用テーブルの作成
それでは、実際に構文の動きを確認してみましょう。まず、以下のクエリでテーブルを作成します。
mysql> create table Add30DayDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> ShippingDate date, -> PRIMARY KEY(ID) -> ); Query OK, 0 rows affected (0.76 sec)
テストデータの挿入
次に、INSERTコマンドを使っていくつかのレコードを挿入します。
mysql> insert into Add30DayDemo(ShippingDate) values('2019-02-04');
Query OK, 1 row affected (0.20 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2018-11-15');
Query OK, 1 row affected (0.18 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2013-05-18');
Query OK, 1 row affected (0.15 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2017-08-25');
Query OK, 1 row affected (0.20 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2016-03-01');
Query OK, 1 row affected (0.12 sec)
mysql> insert into Add30DayDemo(ShippingDate) values('2015-09-03');
Query OK, 1 row affected (0.13 sec)SELECT文で全レコードを表示し、挿入内容を確認しておきます。
mysql> select *from Add30DayDemo;
実行結果は以下の通りです。
+----+--------------+ | Id | ShippingDate | +----+--------------+ | 1 | 2019-02-04 | | 2 | 2018-11-15 | | 3 | 2013-05-18 | | 4 | 2017-08-25 | | 5 | 2016-03-01 | | 6 | 2015-09-03 | +----+--------------+ 6 rows in set (0.00 sec)
ADDDATE()関数で30日を追加するUPDATEクエリ
いよいよ、すべての行のShippingDateに30日を加算するクエリを実行します。
mysql> update Add30DayDemo -> SET ShippingDate=ADDDATE(ShippingDate,INTERVAL 30 DAY); Query OK, 6 rows affected (0.44 sec) Rows matched: 6 Changed: 6 Warnings: 0
6行すべてが正常に更新されました。念のため、テーブルの中身をもう一度確認してみましょう。
mysql> select *from Add30DayDemo;
以下が更新後の出力結果です。すべての日付が30日進んでいることがわかります。
+----+--------------+ | Id | ShippingDate | +----+--------------+ | 1 | 2019-03-06 | | 2 | 2018-12-15 | | 3 | 2013-06-17 | | 4 | 2017-09-24 | | 5 | 2016-03-31 | | 6 | 2015-10-03 | +----+--------------+ 6 rows in set (0.00 sec)
補足:特定の行だけ更新したい場合
上記の例ではテーブル内の全レコードが対象になりましたが、WHERE句を追加すれば特定の行だけを更新することも可能です。例えば、Idが1の行だけ30日追加する場合は次のように書きます。
UPDATE Add30DayDemo SET ShippingDate=ADDDATE(ShippingDate, INTERVAL 30 DAY) WHERE Id = 1;
また、「INTERVAL 30 DAY」の部分を変更すれば、月や年など他の単位での加算にも対応できます(例:「INTERVAL 1 MONTH」「INTERVAL 1 YEAR」)。減算したい場合は、ADDDATE()の代わりにSUBDATE()関数を使うか、マイナス値を指定してください。
-
MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法
MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法MySQLでは、テーブル作成時にAUTO_INCREMENTオプションを指定することで、連番の開始値を任意の数値に設定できます。これにより、IDを100や1000など、特定の値から採番することが可能になります。以下の手順で、開始値を100に設定したAUTO_INCREMENTカラムを持つテーブルを作成し、その動作を確認してみましょう。1. テーブルの作成まず、AUTO_INCREMENT=100を指定してテーブルを作成します。mysql> create table DemoTable1907 (
-
MySQLで現在の日付に11日を追加する方法【DATE_ADD関数の使い方】
はじめにMySQLでは、DATE_ADD()関数を使うことで、日付に指定した日数を簡単に加算できます。本記事では、現在の日付(CURDATE())に11日を追加する方法を、テーブル作成からクエリ実行まで具体的な例を交えて解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)テストデータの挿入続いて、INSERTコマンドを使用してテーブルに複数のレコードを挿入します。mysql&g