2008-10-30 42 views

回答

28

試試這個功能

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一個小時......)

+0

如果在地方的113使用121它將得到日期部分正確也 – vzczc 2008-10-30 11:54:35

5
基礎上

非常感謝。我用它在網上四捨五入到15分鐘

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