masalibの日記

システム開発、運用と猫の写真ブログです

SQLServerでの時間別集計について

ログ集計をやっていると
日別や月別という依頼をうけるが
1年に1回程度、時間別でだしてほしいという
依頼がきます

毎回、忘れて調べているので
備忘録として記載する

access_dateというカラムに
アクセス時間があります
フォーマットは
”yyyy-mm-dd HH:mi:ss:mmm”
です

SELECT
        CONVERT(NVARCHAR, access_date, 111) AS 'access_date_char_yyyymmdd'
      , DATEPART ( hour , [access_date] ) as access_date_hour
      ,count(*) as 'icount'
  FROM [accesslog]
group by
        CONVERT(NVARCHAR, access_date, 111) 
      , DATEPART ( hour , [access_date] ) 
order by access_date_char_yyyymmdd,access_date_hour

DATEPART関数が本当に使わないので
忘れてしまいます
戻り値がintなので日付と結合する場合は
0埋めが必要です

DATEPART関数のリファレンスは以下のURL参照
https://msdn.microsoft.com/ja-jp/library/ms174420(v=SQL.120).aspx

忘れるなよ、自分!!