SQL - 舍入到2个小数位

时间:2012-04-30 07:48:08

标签: sql rounding

我需要将分钟转换为小时,四舍五入到小数点后两位。我还需要在小数点后最多只显示2个数字。所以,如果我有分钟为650.那么小时应该是10.83

这是我到目前为止所拥有的:

Select round(Minutes/60.0,2) from ....

但是在这种情况下,如果我的分钟是630小时,那么我的分钟数是10.5000000。但我只希望它为10.50(在四舍五入后)。我如何实现这一目标?

14 个答案:

答案 0 :(得分:344)

你能否将结果转换为numeric(x,2)x <= 38

的位置
select 
    round(630/60.0,2), 
    cast(round(630/60.0,2) as numeric(36,2))

返回

10.500000   10.50

答案 1 :(得分:65)

与SQL Server 2012一样,您可以使用内置的format function

SELECT FORMAT(Minutes/60.0, 'N2')

(仅供进一步阅读......)

答案 2 :(得分:22)

你可以使用

select cast((630/60.0) as  decimal(16,2))

答案 3 :(得分:11)

Declare @number float = 35.44987665;
Select round(@number,2) 

答案 4 :(得分:3)

low[x] = min(low[x], low[v])

答案 5 :(得分:3)

CAST(QuantityLevel AS NUMERIC(18,2))

答案 6 :(得分:2)

适用于postgresql和Oracle

SELECT ename, sal, round(((sal * .15 + comm) /12),2) 
FROM emp where job = 'SALESMAN' 

答案 7 :(得分:2)

以下查询非常有用且简单 -

declare @floatExchRate float;
set @floatExchRate=(select convert(decimal(10, 2), 0.2548712))
select  @floatExchRate

输出为0.25。

答案 8 :(得分:2)

将您的号码转换为NumericDecimal

使用以下内容替换您的查询。

Sql server

Select Convert(Numeric(38, 2), Minutes/60.0) from ....

<强> MySQL的:

Select Convert(Minutes/60.0, Decimal(65, 2)) from ....

Cast函数是Convert函数的包装器。结合使用SQL作为解释语言,结果是即使两个函数产生相同的结果,Cast函数中的幕后工作也会稍微多一些。使用Convert功能可以节省很少的费用,但可以节省很多费用。

答案 9 :(得分:1)

以下代码段可能会对您有所帮助:

select SUBSTR(ENDDTTM,1, 9), extract(DAY FROM (ENDDTTM)), ENDDTTM, BEGINDTTM,  (ENDDTTM - BEGINDTTM),substr(BEGINDTTM, 1,15), substr((ENDDTTM - BEGINDTTM), 12, 8),
round((substr((ENDDTTM - BEGINDTTM), 12, 2)* 3600 + substr((ENDDTTM - BEGINDTTM), 15, 2)*60 +  substr((ENDDTTM - BEGINDTTM), 18, 2)),2) as seconds,
round((substr((ENDDTTM - BEGINDTTM), 12, 2)* 60 + substr((ENDDTTM - BEGINDTTM), 15, 2) +  substr((ENDDTTM - BEGINDTTM), 18, 2)/60 ), 2)as minutes,
round((substr((ENDDTTM - BEGINDTTM), 12, 2) + substr((ENDDTTM - BEGINDTTM), 15, 2)/60 +  substr((ENDDTTM - BEGINDTTM), 18, 2)/3600 ),2)  as hours

答案 10 :(得分:1)

你在面额中使用的内容应该是十进制的,例如1548/100会给15.00

如果我们在示例中将100替换为100.0,我们将获得15.48

select 1548/100 
15.00000

select 1548/100.0
15.4800

0

答案 11 :(得分:1)

试试这个:SELECT CAST(ROUND([Amount 1]/60,2) AS DECIMAL(10,2)) as TOTAL

答案 12 :(得分:1)

作为以下答案的补充,在公式中使用INT或非十进制数据类型时,请记住将值乘以1并选择所需的小数位数。

即-TotalPackagesINT,所以分母TotalContainers,但是我希望我的结果最多有6个小数位。

因此:

((m.TotalPackages * 1.000000) / m.TotalContainers) AS Packages,

答案 13 :(得分:0)

如果有人想四舍五入到 x 个小数位:

SET @Result = CEILING(@Value * POWER(10, @Decimals)) / POWER(10, @Decimals)

WHERE @Value 是要四舍五入的项的值,@Decimals 是小数位数,例如2 在这种情况下。