2014-09-10 65 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