MySQLのDATETIME型では「2016-01-01 10:00:00」というかたちでデータが登録されています。
複数年にわたって登録されているデータから7月に該当するデータを取り出したいと思い、やりかたを調べてみました。
DATE_FORMAT関数を使うと、特定の年月、年、月、日などを簡単に取り出すことができます。
年月での抽出
2016年1月のデータを抽出するSQL文
SELECT * FROM table_name WHERE DATE_FORMAT(column_name, '%Y%m')=201601;
年での抽出
2016年のデータを抽出するSQL文
SELECT * FROM table_name WHERE DATE_FORMAT(column_name, '%Y')=2016;
月での抽出
7月のデータを抽出するSQL文
SELECT * FROM table_name WHERE DATE_FORMAT(column_name, '%m')=7;
SQL文の中での具体的な使用例
SELECT * FROM table_name WHERE (DATE_FORMAT(column_name, '%Y%m') = '201601') LIMIT 100;