MySQLのDATE_ADD()関数で複数の間隔を追加する方法
はじめに
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」のように演算子を使った記述でも、同じ結果を得ることが可能です。
-
MySQLで複数の列を基準に行を並べ替える方法(ORDER BY句の使い方)
MySQLでは、ORDER BY句に複数の列名をカンマ区切りで指定することで、行を複数の列を基準に並べ替えることができます。最初に指定した列が優先され、その列の値が同じ場合にのみ、次に指定した列の順序が適用されます。ここでは、実際にテーブルを作成して、複数列でのソート動作を確認してみましょう。1. テーブルの作成まず、以下のコマンドでサンプルテーブル「DemoTable」を作成します。mysql> create table DemoTable -> ( -> FirstName varchar(20), -> LastName varchar(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