2013-12-21 4 views
9

結果として完全な日付時刻を持つSQL Serverで1時間あたりの行数をカウントするにはどうすればよいですか。結果として完全な日付時刻の値を持つSQL Serverで1時間あたりの行数をカウントします。

私はすでにこれを試みたが、それは今の結果があるだけ時間

SELECT DATEPART(HOUR,TimeStamp), Count(*) 
FROM [TEST].[dbo].[data] 
GROUP BY DATEPART(HOUR,TimeStamp) 
ORDER BY DATEPART(HOUR,TimeStamp) 

を返します。

Hour Occurrence 
---- ---------- 
10  2157 
11  60740 
12  66189 
13  77096 
14  90039 

しかし、私はこれを必要とする:

Timestamp    Occurrence 
-------------------  ---------- 
2013-12-21 10:00:00  2157 
2013-12-21 11:00:00  60740 
2013-12-21 12:00:00  66189 
2013-12-21 13:00:00  77096 
2013-12-21 14:00:00  90039 
2013-12-22 09:00:00  84838 
2013-12-22 10:00:00  64238 

答えて

18

あなたが実際にTimeStampを1時間に丸める必要があります。 SQL Serverでは、これは少し醜いですが、簡単に行うことができます:

SELECT dateadd(hour, datediff(hour, 0, TimeStamp), 0) as TimeStampHour, Count(*) 
FROM [TEST].[dbo].[data] 
GROUP BY dateadd(hour, datediff(hour, 0, TimeStamp), 0) 
ORDER BY dateadd(hour, datediff(hour, 0, TimeStamp), 0); 
+0

優れています。確かに少し醜い(確かにMySQLに比べて) –

+3

これは本当に便利です。レコードが追加されていない時間にクエリがゼロの値を返すようにするにはどうしてですか?結果表でそれらをスキップするのではなく?ありがとう。 – Adam92

+0

@ Adam92。 。 。それは別の質問です。あなたはそれをすることができますが、クエリは少し違って見えます。 –

関連する問題