2012-09-30
mysqlで、datetimeのカラムの年と月だけを利用する
datetime型のカラムには例えば 2012-09-30 12:00:00 のように値が格納されているとし、ここから 201209 のように、年と月だけを対象にして検索をかける方法のメモ。
mysqlの DATE_FORMAT 関数を利用することで、アプリケーション側でごにょごにょする必要なく検索をかけることができる。
-- 例 : created_atカラムの値が '201209' のデータを10件取得する
SELECT * FROM users WHERE (DATE_FORMAT(created_at, '%Y%m') = '201209') LIMIT 10;DATE_FORMAT 関数の詳細については以下
今回のように、「年と月」だけではなく、年だけ、月だけ、月日だけというような操作も容易にできるよう。
MySQLには他にも日付を操作する関数がたくさんあるようなので、アプリケーション側で操作する前に、こちらで操作できないかをまず調べるようにしたい。

h3pei
フリーランスのソフトウェアエンジニア。Ruby / Rails アプリケーションの開発が得意領域。設計・実装・運用まで含めてプロダクト開発が好きです。
Questalという目標達成コミュニティサービスを開発しました。仲間と一緒に目標達成に取り組みたい方はぜひご利用ください。