【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