我需要把分钟转换成小时,四舍五入到小数点后两位。我还需要只显示小数点后最多两个数字。如果分钟是650,那么小时应该是10.83。
以下是我目前所了解到的:
Select round(Minutes/60.0,2) from ....
但是在这种情况下,如果我的分钟是630小时是10500万。但我只希望它是10.50(四舍五入后)。我该如何做到这一点?
我需要把分钟转换成小时,四舍五入到小数点后两位。我还需要只显示小数点后最多两个数字。如果分钟是650,那么小时应该是10.83。
以下是我目前所了解到的:
Select round(Minutes/60.0,2) from ....
但是在这种情况下,如果我的分钟是630小时是10500万。但我只希望它是10.50(四舍五入后)。我该如何做到这一点?
当前回答
我发现STR函数是完成这一任务的最干净的方法。
SELECT STR(ceiling(123.415432875), 6, 2)
其他回答
四舍五入到小数点后x位:
SET @Result = CEILING(@Value * POWER(10, @Decimals)) / POWER(10, @Decimals)
其中@Value是要四舍五入的项的值,@Decimals是小数点后的位数,例如,在本例中是两位。
您可以将结果转换为数值(x,2)。其中x <= 38。
select
round(630/60.0,2),
cast(round(630/60.0,2) as numeric(36,2))
返回
10.500000 10.50
这招对我很管用:
SELECT FORMAT(Minutes/60.0, '0.00')
下面的代码片段可能会对您有所帮助:
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
将您的数字转换为数字或小数。
将您的查询替换为以下内容。
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)的参数表示要使用的最大精度级别和小数位数。