18

時間を受け取り、次/前の1時間/30分/15分/分に丸める関数を探しています。

4

2 に答える 2

30

この機能を試す

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)

最初のパラメーターは丸められる時間で、2 番目はリストに基づいています (0.5-30 分、1-1 時間、...)

于 2008-10-30T11:12:10.187 に答える
6

ありがとうございます。インラインで使用して 15 分に丸めました

convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
于 2010-07-05T00:53:02.123 に答える