如何在T-SQL中缩短时间

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

试试这个function

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