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

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

以下是我到目前为止:

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

但在这种情况下,如果我的会议纪录是630小时,就是1050万。 但是我只想把它作为10.50(四舍五入后)。 我如何做到这一点?

你不能把你的结果作为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一样,您可以使用内置的格式化函数 :

 SELECT FORMAT(Minutes/60.0, 'N2') 

(只是为了进一步阅读…)

您可以使用

 select cast((630/60.0) as decimal(16,2)) 
 Declare @number float = 35.44987665; Select round(@number,2) 

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

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

输出为0.25。

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

使用postgresql和Oracle工作

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

你在面额中使用的是十进制数字,例如1548/100 15.00

如果我们用100.0代替100 ,我们将得到15.48

 select 1548/100 15.00000 select 1548/100.0 15.4800 0 

以下片段可能会帮助您:

 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 

我发现STRfunction是实现这一点的最简单的方法。

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