SQL Server舍入(CEILING)

时间:2014-09-10 21:05:52

标签: 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四舍五入到最近的分钟。

由于

2 个答案:

答案 0 :(得分:4)

@billsec/60中的两个操作数都是整数,因此结果总是先截断(整数除法)。

您需要使用decimal或float中的一个或两个来保留小数部分。否则CEILING将永远是一个无操作,因为你总是传递一个完整的整数。

用以下代码替换相关的代码部分将解决此问题

CEILING(@billsec/60.0)

答案 1 :(得分: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