【MySQL】Date型の日付情報の一部をWHERE句の条件として利用する【DATE_FORMAT関数】
下のような日付情報を含むテーブルからWHERE句を使ってデータを抽出する際に、
年月日全体(例:2020-11-11)ではなく、年や月だけで絞り込みをする方法をメモしておきます。
id | date |
---|---|
1 | 2020-11-11 |
2 | 2020-11-12 |
3 | 2020-10-10 |
4 | 2021-12-10 |
環境
MySQL : 8.0
解決策
DATE_FORMAT関数を使うと年や月だけで絞り込みができます。
SELECT * FROM sample_tables WHERE DATE_FORMAT(date, '%Y') = '2020';
とすれば、西暦が2020年であるデータ(id:1~3)のみが抽出できます。
id | date |
---|---|
1 | 2020-11-11 |
2 | 2020-11-12 |
3 | 2020-10-10 |
DATE_FORMAT関数の引数には、DATE型のカラム名(例:date)とフォーマットを表現する文字列(例:'%Y')を指定します。
指定できるフォーマットは公式ドキュメントに記載されています。
MySQL :: MySQL 8.0 Reference Manual :: 12.7 Date and Time Functions
複数のフォーマットを同時に指定することも可能です。
SELECT * FROM sample_tables WHERE DATE_FORMAT(date, '%Y-%c') = '2020-11';
id | date |
---|---|
1 | 2020-11-11 |
2 | 2020-11-12 |