SQL-округление до 2 знаков после запятой

Мне нужно преобразовать минуты в часы, округленные до 2 знаков после запятой.Мне также нужно отображать только до 2 чисел после десятичной точки. Поэтому, если у меня есть минуты как 650.Тогда часов должно быть 10.83

вот что у меня пока есть:

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

но в этом случае, если мои минуты,скажем, 630 часов - это 10.5000000. Но я хочу, чтобы это было только 10.50 (после округления). Как мне этого достичь?

12 ответов


не могли бы вы не бросили свой результат как 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, Вы можете использовать встроенный функции format:

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' 

следующий код может помочь вам:

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

то, что вы используете в деноминации, должно быть десятичным, например 1548/100 даст 15.00

если заменить 100 С 100.0 в нашем примере мы получим 15.48

select 1548/100 
15.00000

select 1548/100.0
15.4800

0

попробуйте это : SELECT CAST(ROUND([Amount 1]/60,2) AS DECIMAL(10,2)) as TOTAL


преобразуйте свой номер в Numeric или Decimal.

замените запрос следующим.

Sql server

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

MySql:

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

на Cast функция является оболочкой для


Я нахожу функцию STR самым чистым средством для достижения этого.

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