四舍五入到60

时间:2018-09-12 08:28:25

标签: sql-server

如何将数字四舍五入到60的间隔? 例如,如果我有数字61,它应该四舍五入到60,如果数字是150,它应该四舍五入到120,如果是{{1} }应该四舍五入为59

5 个答案:

答案 0 :(得分:4)

要截断值乘以60,再除以60。请参见演示:

SELECT 61/60*60 --result: 60
SELECT 59/60*60 --result: 0

数字必须为int(bigint,smallint,tinyint)。如果不是,请使用CAST / CONVERT。

另请参阅Division (Transact SQL)

  

如果将整数除数除以整数除数,则结果为   一个整数,其结果的任何小数部分都会被截断。

答案 1 :(得分:2)

丑陋,但有效: 整数除法然后相乘

SELECT (125 / 60 ) * 60

答案 2 :(得分:2)

这就是你想要的

DECLARE @TestVal INT = 59
SELECT @TestVal - (@TestVal % 60)

SET @TestVal = 61
SELECT @TestVal - (@TestVal % 60)

SET @TestVal = 150
SELECT @TestVal - (@TestVal % 60)

答案 3 :(得分:1)

另一种方法是使用modulus运算符将除数除以60,然后减去:

  

%(模数)(Transact-SQL)

     

返回一个数字的余数除以另一个。

例如:

declare @valueToTest int = 150
select @valueToTest - (@valueToTest % 60) as result

-- result: 120

因此,当您将@valueToTest除以60并从原始@valueToTest中减去它时,将得到余数。

答案 4 :(得分:0)

我更喜欢FLOOR,而不是依赖Integer除法,这就是FLOOR的用途。例子

DECLARE @YourVal DECIMAL(10,4) = 220.1234;
SELECT @YourVal / 60 * 60, FLOOR(@YourVal / 60) * 60;