Подтвердить что ты не робот

Как округлить время в T-SQL

Я ищу функцию, которая получит время и будет округлять ее до следующего/предыдущего часа/полчаса/четверти/минуты.

4b9b3361

Ответ 1

Попробуйте эту функцию

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-й час,...)

Ответ 2

Очень приятно. Я использовал его в режиме онлайн до раунда до 15 минут.

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