Cómo redondear un tiempo en T-SQL

Estoy buscando una función que recibiría un tiempo y la redondearía a la siguiente / hora anterior / media hora / trimestre / minuto.

Prueba esta función

CREATE FUNCTION [dbo].[RoundTime] (@Time datetime, @RoundTo float) RETURNS datetime AS BEGIN DECLARE @RoundedTime smalldatetime DECLARE @Multiplier float SET @Multiplier= 24.0/@RoundTo SET @RoundedTime= ROUND(CAST(CAST(CONVERT(varchar,@Time,121) AS datetime) AS float) * @Multiplier,0)/@Multiplier RETURN @RoundedTime END select dbo.roundtime('13:15',0.5) 

El 1er param es el tiempo para redondear y el 2do será la base en su lista (0.5-media hora, 1-una hora, …)

Muy bien, gracias. Lo usé en línea para redondear a 15 minutos

 convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime