データベースを使って集計表見たいなものを作っていると、日付毎の合計数などが知りたい場合がある。
普通にレコードに記録した日付でグループ化して合計とれば良い、というのはわかるけど
日付の型をDATETIMEにしていると時、分、秒も要素として入ってしまうので同じ日付でも1秒違うと違う
グループになってしまう。まあ、当たり前だ。
では、これをシンプルにまとめるコードが無いかと思い調べたのでメモ。
例えば
id | ip | update_time
——————————————–
1 | 192.168.0.1 | 2012-06-29 11:11:11
——————————————–
2 | 192.168.0.2 | 2012-06-29 11:11:12
——————————————–
3 | 192.168.0.1 | 2012-06-29 11:11:13
見たいなテーブルがあったとしたら、
substringを使って日付部分の文字を切り出し、その結果をselect文に入れてグループ化する。
具体的には以下のような感じ。
select substring(update_time,1,10) as date,count(id) as cut from tbl group by date
MySQLを使いました。