Ich bin auf der Suche nach einer Funktion, die eine Zeit erhalten würde und würde es auf die nächste/vorherige Stunde/halbe Stunde/Viertel/Minute runden.Wie man eine Zeit in T-SQL rundet
17
A
Antwort
28
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 1. param wird die Zeit gerundet werden, und die zweite wird Basis auf Ihrer Liste (0,5 halbe Stunde, 1-1 Stunde, ...)
5
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
Wenn Sie 121 anstelle von 113 verwendet werden wird es richtig auch – vzczc
leider das Datumsteil erhalten, 121 anstelle von 114 – vzczc
nichts wert, die Schritten als Dezimalzahl angegeben werden Notation von einem Bruchteil einer Stunde. Wenn Sie also wollen, dass es in 5-Minuten-Intervallen gerundet wird, dann ist das 1/12 einer Stunde, also wäre @RoundTo .083. – eidylon