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

MySQLテーブルに保存された日付にEXTRACT()関数を適用する方法

MySQLのテーブルに保存されている日付データから、年・月・日などの特定の部分だけを取り出したい場合、EXTRACT()関数を使用すると便利です。この記事では、実際のテーブルを使いながら、EXTRACT()関数の基本的な使い方を解説します。

サンプルテーブルの確認

まず、以下のクエリで「testing」テーブルに登録されている日付データを確認してみましょう。

mysql> Select * from testing;
+-------------+---------------------+
| StudentName | Dateofreg           |
+-------------+---------------------+
| Ram         | 2017-10-28 21:24:24 |
| Shyam       | 2017-10-28 21:24:30 |
| Mohan       | 2017-10-28 21:24:47 |
| Gaurav      | 2017-10-29 08:48:33 |
+-------------+---------------------+
4 rows in set (0.00 sec)

EXTRACT()関数で「年」を抽出する

次に、EXTRACT()関数を使って、「Dateofreg」カラムから年(Year)の値を取り出します。構文は「EXTRACT(単位 FROM カラム名)」の形式で記述します。

mysql> Select EXTRACT(Year from dateofreg) AS YEAR from testing;
+------+
| YEAR |
+------+
| 2017 |
| 2017 |
| 2017 |
| 2017 |
+------+
4 rows in set (0.00 sec)

このように、すべてのレコードから登録日の「2017」という年の値が抽出されました。

EXTRACT()関数で「日」を抽出する

同様の方法で、日(Day)の値も抽出できます。「Year」の部分を「Day」に変更するだけでOKです。

mysql> Select EXTRACT(day from dateofreg) AS DAY from testing;
+-----+
| DAY |
+-----+
| 28  |
| 28  |
| 28  |
| 29  |
+-----+
4 rows in set (0.00 sec)

EXTRACT()関数で指定できる主な単位

EXTRACT()関数では、上記以外にもさまざまな単位を指定できます。主なものは以下のとおりです。

  • MONTH:月を抽出
  • HOUR:時を抽出
  • MINUTE:分を抽出
  • SECOND:秒を抽出
  • YEAR_MONTH:年と月を組み合わせて抽出(例:201710)
  • DAY_HOUR:日と時を組み合わせて抽出

まとめ

EXTRACT()関数を使えば、DATETIME型やDATE型のカラムから、年・月・日・時刻など必要な部分だけを簡単に取り出せます。GROUP BY句と組み合わせれば「月別の集計」などにも活用できるため、実務でも頻繁に使われる便利な関数です。

  1. MySQLの関数からテーブル(結果セット)を返す方法|ストアドプロシージャの使い方

    MySQL関数ではテーブルを返せない結論から言うと、MySQLの関数(FUNCTION)からテーブルや結果セットを返すことはできません。MySQLの関数が返せるのは、文字列、整数、CHAR型などのスカラー値に限られます。テーブル形式のデータ(複数行・複数列の結果セット)を返したい場合は、関数ではなくストアドプロシージャ(Stored Procedure)を使用しましょう。この記事では、実際にサンプルテーブルを作成し、ストアドプロシージャで結果セットを取得する手順を解説します。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> creat

  2. MySQLでBOOLEAN型として保存された性別の値を文字列(MALE/FEMALE)として抽出する方法

    はじめにMySQLでは、BOOLEAN型のカラムは内部的にTINYINT(1)として扱われ、trueは「1」、falseは「0」として保存されます。そのため、表示の際には数値ではなく「MALE」や「FEMALE」のような文字列に変換して取得したいケースがよくあります。本記事では、IF関数を使ってブール値を文字列として抽出する方法を解説します。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成します。mysql> create table DemoTable815(Gender BOOLEAN);Query OK, 0 rows affected (0.84 sec)レコードの挿入