Как округлить время в T-SQL - PullRequest
18 голосов
/ 30 октября 2008

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

Ответы [ 2 ]

29 голосов
/ 30 октября 2008

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

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)

1-й параметр - это время, которое нужно округлить, а 2-й будет базироваться в вашем списке (0,5 часа, 1 час, ...)

5 голосов
/ 05 июля 2010

Очень приятно, спасибо. Я использовал это в линию, чтобы округлить до 15 минут

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