MySQLのINTERVALキーワードとEXTRACT()関数を組み合わせて日付の一部を抽出する方法
MySQLでは、INTERVALキーワードとEXTRACT()関数を組み合わせることで、日付や時刻に加算・減算を行ったうえで、年や月などの特定の部分だけを簡単に抽出できます。ここでは、具体的な例を使ってその使い方を解説します。
テーブルのカラムに対してINTERVALキーワードを使用する例
まず、テーブルに保存されている日付データに対して、EXTRACT()関数とINTERVALキーワードを組み合わせて使用する例を見てみましょう。
mysql> Select StudentName, RegDate, EXTRACT(YEAR from RegDate+INTERVAL 2 year) AS 'Two Year Interval' from testing where StudentName = 'Gaurav'; +-------------+---------------------+-------------------+ | StudentName | RegDate | Two Year Interval | +-------------+---------------------+-------------------+ | Gaurav | 2017-10-29 08:48:33 | 2019 | +-------------+---------------------+-------------------+ 1 row in set (0.02 sec)
このクエリでは、登録日(RegDate)に「INTERVAL 2 year」を加算して2年後の日付を計算し、そこからEXTRACT(YEAR ...)によって「年」の部分のみを抽出しています。結果として、2017年に登録されたデータから2019年という値が取得できていることがわかります。
特定の日付文字列に対してINTERVALキーワードを使用する例
次に、テーブルではなく、クエリ内で直接指定した日付に対して同じ操作を行う例です。
mysql> Select EXTRACT(Year from '2017-10-22 05:03:45' + INTERVAL 2 Year) AS 'Two Year Interval'; +-------------------+ | Two Year Interval | +-------------------+ | 2019 | +-------------------+ 1 row in set (0.00 sec)
このように、特定の日時の値にINTERVALキーワードで期間を加算し、その結果からEXTRACT()関数で必要な部分(この場合は年)だけを抜き出すことができます。
まとめ
INTERVALキーワードは、日付や時刻に対して一定の期間を加算・減算するために使われるキーワードです。EXTRACT()関数と組み合わせれば、「2年後の日付の年だけを取得する」といった処理をシンプルなSQL文で実現できます。テーブルのカラムにも、クエリ内で指定した日付文字列にも同様に適用できるため、日付関連の集計やレポート作成の際に非常に便利です。
-
MySQLで予約語「Key」をカラム名として使用する方法【バッククォートの使い方】
MySQLでは「Key」は予約語(予約済みキーワード)として登録されているため、そのままカラム名として使用するとエラーが発生します。そこで活躍するのがバッククォート(`)です。カラム名の前後をバッククォートで囲むことで、予約語でも安全に使用できるようになります。本記事では、実際にカラム名「key」を持つテーブルを作成する例を通じて、具体的な手順をわかりやすく解説します。1. テーブルを作成するまず、バッククォートで囲んだ「Key」というカラムを持つテーブルを作成しましょう。mysql> create table DemoTable ( `Key` int ); Query OK,
-
MySQLで@記号を使う方法!ユーザー定義変数の基本と実例をわかりやすく解説
MySQLで@記号を使用するには、SETコマンドを利用します。@記号は、セッション内で有効なユーザー定義変数を設定する際に使われる記号です。変数に値を格納しておけば、後続のクエリ内でその値を何度でも再利用できるため、条件の共通化や一時的な値の保持に非常に便利です。 @記号によるユーザー定義変数の基本構文 ユーザー定義変数を設定する基本的な構文は以下のとおりです。 SET @anyVariableName := yourValue; :=は代入演算子で、右側の値を左側の変数に代入します。これにより、以降のSQL文の中で@anyVariableNameを参照できるようになります。 サンプルテーブル