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

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

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

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


当前回答

您可以将结果转换为数值(x,2)。其中x <= 38。

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

返回

10.500000    10.50

其他回答

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

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

将您的数字转换为数字或小数。

将您的查询替换为以下内容。

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函数的幕后有更多的事情要做。

使用转换函数是一个小节省,但小节省乘数。Numeric和Decimal(38,2)和(65,2)的参数表示要使用的最大精度级别和小数位数。

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

试试这个:

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

这适用于PostgreSQL和Oracle:

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