Je cherche une fonction qui recevrait une heure et l'arrondirait à l'heure/heure précédente/demi-heure/quart/minute.Comment arrondir une heure dans T-SQL
17
A
Répondre
28
Essayez cette fonction
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)
Le 1er PARAM est le temps d'arrondi et la 2ème sera la base sur votre liste (0,5 demi-heure, 1 une heure, ...)
5
Très bien merci. Je l'ai utilisé en ligne pour arrondir à 15 minutes
convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
Si vous utilisez 121 à la place de 113, il obtiendra le datepart correct aussi – vzczc
Désolé, 121 au lieu de 114 – vzczc
ne vaut rien que par incréments doivent être spécifiés en décimal notation d'une fraction d'heure. Donc, si vous voulez qu'il soit arrondi à des intervalles de 5 minutes, alors cela fait 1/12 d'heure, donc @RoundTo serait .083. – eidylon