日付から任意の年月日を取得する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)