UDF to round minutes to quarter hour

February 25, 2003

>>Script Language and Platform: SQL Server 2000 User-Defined Functions
At our consulting firm, we record time in minutes, and we round those minutes up to the next quarter hour; for reporting purposes, we bill according to hours used. This function requires an input of minutes used, and will return the results rounded to the next quarter hour (e.g.):

SELECT dbo.udfRoundQtRHr(61)   returns 1.25
SELECT dbo.udfRoundQtRHr(59)   returns 1.00

Author: Stuart R Ainsworth


CREATE  FUNCTION udfRoundQtrHr (@Minutes as numeric(10,6)) 
RETURNS numeric(6,2) AS

   DECLARE @Output int
   DECLARE @ModOutput numeric(10,6)

   SET @Output =  CEILING(@Minutes) -- raises the value of the minutes 
   		to the next whole minute 	

   SET @ModOutput = @Output % 60
   SET @ModOutput = CASE WHEN @ModOutput BETWEEN 1 AND 15 THEN 0.25
			WHEN @ModOutput BETWEEN 16 AND 30 THEN 0.50
			WHEN @ModOutput BETWEEN 31 AND 45 THEN 0.75
			WHEN @ModOutput BETWEEN 46 AND 59 THEN 1.00
			ELSE 0

   RETURN(@Output/60 + @ModOutput)


Disclaimer: We hope that the information on these script pages is valuable to you. Your use of the information contained in these pages, however, is at your sole risk. All information on these pages is provided "as -is", without any warranty, whether express or implied, of its accuracy, completeness, or fitness for a particular purpose... Disclaimer Continued

Back to Database Journal Home