MySQLで日付毎の集計を計算する

 データベースを使って集計表見たいなものを作っていると、日付毎の合計数などが知りたい場合がある。
普通にレコードに記録した日付でグループ化して合計とれば良い、というのはわかるけど
日付の型を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を使いました。



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>