2009年12月12日土曜日

[MySQL] timestamp型から日別に集計する

SQLで集計を行う際に、日別に集計を取りたいときがあります。
でも持っている日付データは timestamp のみ。
この時、timestamp に対して GROUP BY を行うと、
日付のみならず時刻までもグルーピングしてしまって、
秒単位の集計になってしまい、使い物になりません。

そこで、SUBSTRING を使って頭 10 文字だけを GROUP BY することで、
日別に集計することができます。
SELECT
    SUBSTRING(timestamp,1,10) AS date,
    COUNT(*)
FROM
    table
GROUP BY
    date;
timestamp が 'YYYY-MM-DD HH:MM:SS' のフォーマットなので、
先頭から 10 文字を見れば、'YYYY-MM-DD' になるという寸法ですね。

0 件のコメント: