在SQL中四舍五入到小数点后两位

我需要把分钟转换成小时,四舍五入到小数点后两位。我还需要只显示小数点后最多两个数字。如果分钟是650,那么小时应该是10.83。

以下是我目前所了解到的:

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

但是在这种情况下,如果我的分钟是630小时是10500万。但我只希望它是10.50(四舍五入后)。我该如何做到这一点?

1099428 次浏览

你可以将结果转换为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

使用SQL Server 2012,你可以使用内置的< em > < / em >格式功能:

SELECT FORMAT(Minutes/60.0, 'N2')

下面的代码片段可能会对您有所帮助:

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

这在PostgreSQL和Oracle中都有效:

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

你可以使用:

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

SQL Server

以下查询是有用和简单的-

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

输出值为0.25。

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


SET @porcentaje = (CONVERT(DECIMAL,ABS(8700)) * 100) / CONVERT(DECIMAL,ABS(37020))


SELECT @porcentaje

无论你用什么来命名,都应该是十进制。例如,1548/100将给出15.00

在我们的例子中,如果我们用100.0替换100,那么我们将得到15.48

select 1548/100
15.00000


select 1548/100.0
15.4800


0

我发现STR函数是完成这一任务的最干净的方法。

SELECT STR(ceiling(123.415432875), 6, 2)

试试这个:

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

将你的数字转换为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函数是一个小的节省,但小的节省乘以。数值和十进制参数(38,2)和(65,2)表示要使用的最大精度级别和小数点后数位。

作为下面答案的附加内容,当在公式中使用INT或非十进制数据类型时,请记住将值乘以1和您喜欢的小数数。

即- TotalPackages是一个INT,所以是分母TotalContainers,但我希望我的结果有多达6位小数点后。

因此:

((m.TotalPackages * 1.000000) / m.TotalContainers) AS Packages,
CAST(QuantityLevel AS NUMERIC(18,2))

围捕到x小数点后数位:

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

其中@ value是要舍入的项的值,@Decimals是小数点后的位数,例如,在本例中是两位。

这招对我很管用:

SELECT FORMAT(Minutes/60.0, '0.00')