2014-09-10 68 views
1

我有这样的:的SQL Server舍入(上限)

DECLARE @billsec as int 
SET @billsec = 67 

DECLARE @_cost as money 
SET @_cost = 0.1 + (CEILING((@billsec/60)) * 0.015) 

print @_cost 

它返回0.12,但我期待为0.13我想圆的@billsec到最近分钟。

由于

+0

如果你想“最近”可能是你需要'round'而不是'天花板“,但无论你需要停止整数除法。 – 2014-09-10 21:19:04

回答

4

@billsec/60两个操作数都是整数所以结果是始终截短第一(整数除法)。

您需要使一个或两个小数或浮点数来保留小数部分。否则CEILING将永远是一个无操作,因为你总是传递一个确切的整数。

与下面的更换代码的相关部分将解决这一

CEILING(@billsec/60.0) 
2

投浮法...

DECLARE @billsec as int 
    SET @billsec = 67 
    DECLARE @_cost as money 
    SET @_cost = 0.1 + (CEILING((cast (@billsec as float)/60)) * 0.015) 
    print @_cost