如何在T-SQL中完成一段时间

时间:2008-10-30 10:53:58

标签: tsql rounding

我正在寻找能够获得时间的功能,并将其舍入到下一个/前一个小时/半小时/四分之一/分钟。

2 个答案:

答案 0 :(得分:29)

尝试此功能

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)

第一个参数是圆形的时间,第二个参数将基于您的列表(0.5个半小时,1个小时,......)

答案 1 :(得分:5)

非常感谢。我在线使用它来回合15分钟

convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime