Domanda

Sto cercando una funzione che riceva un orario e lo arrotonda all'ora / mezz'ora / quarto / minuto successiva / precedente.

È stato utile?

Soluzione

Prova questa funzione

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)

Il 1o parametro è il tempo da arrotondare e il 2o sarà basato sulla tua lista (0,5-mezz'ora, 1-un'ora, ...)

Altri suggerimenti

Molto bene grazie. L'ho usato in linea per arrotondare a 15 minuti

convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top