MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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()関数を使うか、マイナス値を指定してください。

  1. MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法

    MySQLでAUTO_INCREMENTの開始値を手動で指定してテーブルを作成する方法MySQLでは、テーブル作成時にAUTO_INCREMENTオプションを指定することで、連番の開始値を任意の数値に設定できます。これにより、IDを100や1000など、特定の値から採番することが可能になります。以下の手順で、開始値を100に設定したAUTO_INCREMENTカラムを持つテーブルを作成し、その動作を確認してみましょう。1. テーブルの作成まず、AUTO_INCREMENT=100を指定してテーブルを作成します。mysql> create table DemoTable1907 (

  2. 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