MySQLで複合INTERVAL単位(コンパウンドINTERVAL)を使う方法を徹底解説
MySQLにおける複合INTERVAL単位とは?
MySQLでは、日付や時刻に対して一定の期間を加算・減算する際にINTERVAL式を使用します。その中でも複合INTERVAL単位(Compound INTERVAL Unit)は、2つの単位キーワードを組み合わせて、より柔軟な期間指定を可能にする機能です。
複合INTERVAL単位の基本的な書き方
複合INTERVAL単位のキーワードは、次のように2つのキーワードをアンダースコア(_)で連結して構成されます。
YEAR_MONTH(年 + 月)DAY_HOUR(日 + 時間)HOUR_MINUTE(時間 + 分)
MySQLでこれらを使用する場合、単位の値はシングルクォート(')で囲み、各値はスペースで区切って指定する必要があります。この点が、単一のINTERVAL単位との大きな違いです。
実行例:日付に「2年と2か月」を加算する
以下のクエリでは、YEAR_MONTHという複合単位を使い、日付値「2017-10-22 04:05:36」に2年と2か月を加算しています。
mysql> SELECT TIMESTAMP('2017-10-22 04:05:36' + INTERVAL '2 2' YEAR_MONTH) AS 'Date After 2 Years and 2 Months';
+---------------------------------+
| Date After 2 Years and 2 Months |
+---------------------------------+
| 2019-12-22 04:05:36 |
+---------------------------------+
1 row in set (0.00 sec)結果を見ると、「2017-10-22」からちょうど2年後の「2019-10-22」にさらに2か月が加算され、「2019-12-22 04:05:36」という日時が返されていることがわかります。
ポイントまとめ
- 複合INTERVAL単位は「
YEAR_MONTH」のようにアンダースコアで2つの単位をつなげて記述する。 - 値は
'2 2'のようにシングルクォートで囲み、スペースで区切る。 - 左側の値が先頭の単位(この場合は年)、右側の値が後続の単位(この場合は月)に対応する。
この書き方を覚えておくと、「1年3か月後」「5時間30分後」といった複雑な期間計算も、1つのINTERVAL式だけで簡潔に記述できるようになります。
-
MySQLで@記号を使う方法!ユーザー定義変数の基本と実例をわかりやすく解説
MySQLで@記号を使用するには、SETコマンドを利用します。@記号は、セッション内で有効なユーザー定義変数を設定する際に使われる記号です。変数に値を格納しておけば、後続のクエリ内でその値を何度でも再利用できるため、条件の共通化や一時的な値の保持に非常に便利です。 @記号によるユーザー定義変数の基本構文 ユーザー定義変数を設定する基本的な構文は以下のとおりです。 SET @anyVariableName := yourValue; :=は代入演算子で、右側の値を左側の変数に代入します。これにより、以降のSQL文の中で@anyVariableNameを参照できるようになります。 サンプルテーブル
-
MySQLでWITH ROLLUPを正しく使う方法!GROUP BYと組み合わせた集計テクニックを解説
WITH ROLLUPとは?MySQLのWITH ROLLUPは、GROUP BY句と組み合わせて使用することで、グループごとの集計結果に加えて、全体の合計(総計)行を自動的に追加してくれる便利な機能です。レポート作成やデータ分析の際に、別途合計用のクエリを実行する必要がなくなるため、非常に効率的です。基本構文WITH ROLLUPを使用する際の基本的な構文は以下の通りです。select yourColumnName1,sum(yourColumnName2) from yourTableNamegroup by yourColumnName1 with rollup;サンプルテーブルの作成ま