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

MySQLの1つのクエリで日付に1年と2日を追加する方法


MySQLで日付に1年と2日を同時に加算したい場合は、DATE_ADD関数とINTERVALを組み合わせます。DATE_ADD関数を入れ子(ネスト)にするのがポイントです。ここでは、実際にテーブルを作成してサンプルデータを操作しながら、手順を詳しく解説します。

1. サンプルテーブルを作成する

まず、日付(DATE型)を格納するカラムを持つテーブルを作成します。

mysql> create table DemoTable1376
    -> (
    -> AdmissionDate date
    -> );
Query OK, 0 rows affected (0.68 sec)

2. サンプルデータを挿入する

INSERT文を使って、テーブルにいくつかの日付レコードを登録します。

mysql> insert into DemoTable1376 values('2018-01-21');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1376 values('2017-12-01');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1376 values('2018-11-02');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1376 values('2019-03-14');
Query OK, 1 row affected (0.17 sec)

3. 登録したデータを確認する

SELECT文で全レコードを表示してみましょう。

mysql> select * from DemoTable1376;

実行結果は次のとおりです。

+---------------+
| AdmissionDate |
+---------------+
| 2018-01-21    |
| 2017-12-01    |
| 2018-11-02    |
| 2019-03-14    |
+---------------+
4 rows in set (0.00 sec)

4. 日付に1年と2日を加算するクエリ

次のクエリが、1つのSQLで日付に1年と2日をまとめて追加する方法です。内側のDATE_ADDで「1年」を加算し、その結果に対して外側のDATE_ADDでさらに「2日」を加算しています。

mysql> select date_add(date_add(AdmissionDate,interval 1 year),interval 2 day) AS AfterAddingOneYearTwoDays from DemoTable1376;

実行結果は次のとおりです。

+---------------------------+
| AfterAddingOneYearTwoDays |
+---------------------------+
| 2019-01-23                |
| 2018-12-03                |
| 2019-11-04                |
| 2020-03-16                |
+---------------------------+
4 rows in set (0.00 sec)

出力結果を見ると、たとえば 2018-01-212019-01-23 になっているように、それぞれの日付に1年と2日が正しく加算されていることが確認できます。

補足:入れ子にしない書き方

算術演算子「+」とINTERVALを組み合わせれば、関数を入れ子にせずに同じ結果を得ることも可能です。

mysql> select AdmissionDate + interval 1 year + interval 2 day AS AfterAddingOneYearTwoDays from DemoTable1376;

このようにINTERVALを使いこなすことで、MySQLでの日付計算を柔軟かつ簡潔に記述できるようになります。用途に応じて使い分けてみてください。

  1. MySQLの1つのUPDATE文で2つの列を同時に更新する方法

    はじめにMySQLでは、1つのUPDATE文の中でSET句を一度だけ使えば、複数の列を同時に更新できます。各列の指定はカンマ(,)で区切って記述します。この記事では、実際にテーブルを作成し、1つのクエリで2つの列(FirstNameとLastName)を更新する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1909 ( Id int NOT NULL, FirstName varchar(20), LastName varchar(20)

  2. MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方

    MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (