【发布时间】:2008-10-30 10:53:58
【问题描述】:
我正在寻找一个可以接收时间并将其四舍五入到下一个/上一个小时/半小时/季度/分钟的函数。
【问题讨论】:
我正在寻找一个可以接收时间并将其四舍五入到下一个/上一个小时/半小时/季度/分钟的函数。
【问题讨论】:
试试这个功能
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-一小时,...)
【讨论】:
非常感谢。我在线使用它来舍入到 15 分钟
convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
【讨论】: