2017-01-24 4 views
2

Mit der akzeptierten Antwort in diesem Beitrag gefunden Count rows per hour in SQL Server with full date-time value as result Ich bin in der Lage, eine Zählung der Datensätze nach Stunden zu bekommen, aber ich möchte es so machen, dass der Tag keine Rolle spielt .T-SQL Get Zeilen pro Stunde unabhängig von Tag

Wie kann ich die Anzahl der Datensätze pro Stunde berechnen, unabhängig davon, an welchem ​​Tag der Datensatz erstellt wurde?

Zum Beispiel kann die folgende Tabelle:

+----------+-------------------------+ 
| instance |  datetime   | 
+----------+-------------------------+ 
| A  | 2017-01-10 11:01:05.267 | 
| B  | 2017-01-13 11:07:05.783 | 
| C  | 2017-01-14 11:37:05.593 | 
| D  | 2017-01-17 11:37:38.610 | 
| E  | 2017-01-17 11:47:04.877 | 
| F  | 2017-01-15 12:14:34.127 | 
| G  | 2017-01-17 12:15:09.373 | 
| H  | 2017-01-09 13:58:06.013 | 
+----------+-------------------------+ 

in der folgenden Datenmenge führen würde:

+-------------+-------------+ 
| recordCount | timeStamp | 
+-------------+-------------+ 
|   5 | 11:00:00.00 | 
|   2 | 12:00:00.00 | 
|   1 | 13:00:00.00 | 
+-------------+-------------+ 
+0

Welche Version von SQL Server verwenden Sie? –

+0

Warum entfernen Sie das Datum nicht aus den datetime-Spalten und setzen es für alle Zeilen auf 1900-01-01? Dann würden Sie das erwartete Ergebnis erhalten. – dadde

+0

@Prdp SQL Server 11 –

Antwort

6

Sie DATEPART verwenden können:

SELECT DATEPART(HOUR, [datetime]), COUNT(*) 
FROM mytable 
GROUP BY DATEPART(HOUR, [datetime]) 

Die Funktion eine ganze Zahl zurückgibt, im Wesentlichen Extrahieren des Stundenwerts aus dem Feld DATETIME.

+0

Ausgezeichnet, danke! –

1

Wenn Sie SQL SERVER 2012 oder höher verwenden, dann verwenden FORMAT

SELECT Count(1) AS Recordcount, 
     Format([datetime], 'HH:00:00') 
FROM yourtable 
GROUP BY Format([datetime], 'HH:00:00') 

oder CONCAT und DATEPART

SELECT Concat(Datepart(HOUR, [datetime]), ':00:00'), 
     Count(*) 
FROM Yourtable 
GROUP BY Datepart(HOUR, [datetime]) 
Verwandte Themen