【SQL】日付から任意の年月日を取得するextract関数の使い方

MySQL

日付から任意の年月日を取得するextract関数の使い方について紹介していきます。

前提条件

注文履歴を管理しているテーブルから指定の月の売り上げを取得する

使用するテーブル:ordersテーブル

+------+---------+--------+---------------------+
| id   | user_id | amount | order_time          |
+------+---------+--------+---------------------+
|    1 |       2 |   6000 | 2030-12-31 11:00:00 |
|    2 |       6 |   2000 | 2030-12-25 18:30:00 |
|    3 |       1 |   3000 | 2030-12-10 10:00:00 |
|    4 |       4 |   2500 | 2030-11-01 20:15:00 |
|    5 |       3 |   4000 | 2030-11-30 09:45:00 |
|    6 |       5 |   3600 | 2030-10-15 23:30:00 |
+------+---------+--------+---------------------+
6 rows in set (0.113 sec)

条件

  • 購入日時を管理するorder_timeカラムから指定のデータのみ取得する

extract関数の使い方

構文

select * from テーブル名 where extract(year_month/year/month from カラム名)= 日付;

コードの見方

青文字・・・省略できない決まり文句
紫文字・・・コメント
白文字・・・利用者の任意で入力する文字列

extract(year_month/year/month from カラム名)
取得するデータによって『year_month』or『year』or『month』のいずれかを記述する。

  • year_month・・・年月
  • year・・・・・・・年
  • month・・・・・・月
指定した年月のデータを取得する

2030年12月の売り上げを取得します

使用するSQL文

select * from orders where extract(year_month from order_time)= 203012;

出力結果

+------+---------+--------+---------------------+
| id   | user_id | amount | order_time          |
+------+---------+--------+---------------------+
|    1 |       2 |   6000 | 2030-12-31 11:00:00 |
|    2 |       6 |   2000 | 2030-12-25 18:30:00 |
|    3 |       1 |   3000 | 2030-12-10 10:00:00 |
+------+---------+--------+---------------------+
3 rows in set (0.000 sec)
指定した年のデータを取得する

2030年の売り上げを取得します

使用するSQL文

select * from orders where extract(year order_time)= 2030;

出力結果

+------+---------+--------+---------------------+
| id   | user_id | amount | order_time          |
+------+---------+--------+---------------------+
|    1 |       2 |   6000 | 2030-12-31 11:00:00 |
|    2 |       6 |   2000 | 2030-12-25 18:30:00 |
|    3 |       1 |   3000 | 2030-12-10 10:00:00 |
|    4 |       4 |   2500 | 2030-11-01 20:15:00 |
|    5 |       3 |   4000 | 2030-11-30 09:45:00 |
|    6 |       5 |   3600 | 2030-10-15 23:30:00 |
+------+---------+--------+---------------------+
6 rows in set (0.000 sec)
指定した月のデータを取得する

12月の売り上げを取得します

使用するSQL文

select * from orders where extract(month from order_time)= 12;

出力結果

+------+---------+--------+---------------------+
| id   | user_id | amount | order_time          |
+------+---------+--------+---------------------+
|    1 |       2 |   6000 | 2030-12-31 11:00:00 |
|    2 |       6 |   2000 | 2030-12-25 18:30:00 |
|    3 |       1 |   3000 | 2030-12-10 10:00:00 |
+------+---------+--------+---------------------+
3 rows in set (0.000 sec)
タイトルとURLをコピーしました