Frage

I'me für eine Funktion suchen, der eine Zeit erhalten würde und es zum nächsten / vorherigen Stunde / halbe Stunde / Viertel / Minute abrunden würde.

War es hilfreich?

Lösung

Versuchen Sie, diese Funktion

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)

Der erste param ist die Zeit, gerundet zu werden, und die zweite wird Basis auf Ihrer Liste (0,5 halbe Stunde, 1-1 Stunde, ...)

Andere Tipps

Sehr schön, danke. Ich benutzte es, in-line bis 15 Minuten runden

convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top