Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Round a Time in T-SQL

Tags:

tsql

rounding

I'me looking for a function that would receive a time and would round it to the next/previous hour / half-hour / quarter / minute.

like image 570
Vitor Silva Avatar asked Oct 30 '08 10:10

Vitor Silva


2 Answers

Try this 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)

The 1st param is the time to be rounded and the 2nd will be base on your list (0.5-half hour, 1-one hour, ...)

like image 118
IAdapter Avatar answered Oct 11 '22 11:10

IAdapter


Very nice thanks. I used it in-line to round to 15 minutes

convert(smalldatetime,ROUND(cast(TDatalog.Time as float) * (24/.25),0)/(24/.25)) AS RoundedTime
like image 33
Kevin Avatar answered Oct 11 '22 11:10

Kevin