Runden auf Komponenten eines DATETIME

Es kommt manchmal vor, dass man in T-SQL einen DateTime-Wert auf eine bestimmte Komponente runden muss. Beispielsweise möchte mann die Minuten und Sekunden abschneiden, die Stunde aber behalten. Dies kann man mit folgendem Statement erreichen:

SELECT DATEADD(hh, DATEDIFF(hh, '20000101', getdate()), '20000101')

Das macht aus 2012-01-01 13:59:59 den gewünschten Wert 2012-01-01 13:00:00. Das Vergleichsdatum 20000101 ist beliebig gewählt. Es kann jedes Datum sein, welches vor dem Datum, das bearbeitet wird, liegt.