datetime型から日付で集計する方法 (MSSQL)

例えばWebログを取り貯めているデータベーステーブルから、一日あたりのアクセス数などを知りたくなったとします。
ある1日だけならば WHERE で簡単に出ますが、これで1か月分調べるのは酷。といって単純に GROUP BY すると日付+時間で丸まるので意味がない。日付だけで丸めるにはどうすればいい?

MySQLのは簡単に見つかりましたが、MSSQLのは見つからなかったので、私流のやり方を以下に記します。

—–

SELECT CONVERT(varchar,日時,111) As 日,Count(*)
FROM ログのテーブル
WHERE 日時 BETWEEN 対象期間はじめ And おわり
GROUP BY CONVERT(varchar,日時,111) –ここでAsは使えない
ORDER BY 日

—–

SELECT と GROUP で CONVERT を合わせるのがポイント。ORDER BY は As のでやるべし。ちなみに 111 は yyyy/MM/dd に相当するプロパティ値です。大雑把ですが値が一発で出るので便利です。

コメント

  1. 三佐 says:

    ということは、私が一ヶ月にどんだけあほ程見てるのか一発で解る…ある意味恥ずかしい。