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

MySQLのDATE_ADD()関数で複数の間隔を追加する方法

```html

はじめに

MySQLでは、DATE_ADD()関数を使って日付や時刻に一定の間隔を加算できます。月と年のように異なる単位の間隔を一度に追加したい場合は、DATE_ADD()を入れ子(ネスト)構造にして呼び出すのが基本の方法です。

まずは、現在の日付と時刻を確認しておきましょう。

mysql> select now();

出力結果

+---------------------+
| now()               |
+---------------------+
| 2019-06-15 12:24:06 |
+---------------------+
1 row in set (0.00 sec)

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

次に、検証用のテーブルを作成します。

mysql> create table DemoTable
    ->(
    -> ArrivalDate datetime
    -> );
Query OK, 0 rows affected (1.15 sec)

複数の間隔を追加したレコードを挿入する

INSERT文でデータを挿入します。ここでは、DATE_ADD()を入れ子にすることで、「現在時刻から6ヶ月後にさらに1年を加算」「現在時刻から3ヶ月後にさらに4年を加算」という複数の間隔の計算を同時に行っています。

mysql> insert into DemoTable values(DATE_ADD(DATE_ADD(NOW(), INTERVAL 6 MONTH), INTERVAL 1 YEAR));
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values(DATE_ADD(DATE_ADD(NOW(), INTERVAL 3 MONTH), INTERVAL 4 YEAR));
Query OK, 1 row affected (0.16 sec)

テーブルの内容を確認する

SELECT文ですべてのレコードを表示しましょう。

mysql> select *from DemoTable;

出力結果

+---------------------+
| ArrivalDate         |
+---------------------+
| 2020-12-15 12:23:39 |
| 2023-09-15 12:23:48 |
+---------------------+
2 rows in set (0.00 sec)

まとめ

このように、内側のDATE_ADD()が返した日時に対して、外側のDATE_ADD()がさらに別の間隔を加算する仕組みにより、複数の間隔を組み合わせた日付計算が実現できます。なお、「NOW() + INTERVAL 6 MONTH + INTERVAL 1 YEAR」のように演算子を使った記述でも、同じ結果を得ることが可能です。

  1. MySQLで複数の列を基準に行を並べ替える方法(ORDER BY句の使い方)

    MySQLでは、ORDER BY句に複数の列名をカンマ区切りで指定することで、行を複数の列を基準に並べ替えることができます。最初に指定した列が優先され、その列の値が同じ場合にのみ、次に指定した列の順序が適用されます。ここでは、実際にテーブルを作成して、複数列でのソート動作を確認してみましょう。1. テーブルの作成まず、以下のコマンドでサンプルテーブル「DemoTable」を作成します。mysql> create table DemoTable -> ( -> FirstName varchar(20), -> LastName varchar(2

  2. MySQLで複数のSELECTクエリを一度に実行する方法【DELIMITER活用】

    MySQLで複数のSELECTクエリを一度に実行するには、DELIMITERの概念を利用します。この記事では、実際にテーブルを作成しながら、複数のSELECT文をまとめて実行する手順をわかりやすく解説します。 準備:サンプルテーブルの作成 まず、1つ目のテーブルを作成します。 mysql> create table DemoTable1 ( Title text )ENGINE=MyISAM; Query OK, 0 rows affected (0.30 sec) 次に、INSERTコマンドを使ってテーブルにレコードを挿入します。 mysql> insert into D