Ответ 1
Не могли ли вы сделать свой результат как 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
Мне нужно преобразовать минуты в часы, округленные до двух знаков после запятой. Мне также нужно отображать только до двух чисел после десятичной точки. Так что, если у меня минут как 650.Что должно быть часа 10.83
Вот что я до сих пор:
Select round(Minutes/60.0,2) from ....
Но в этом случае, если мои минуты, скажем, 630 часов - 10.5000000. Но я хочу, чтобы он был только 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'
Следующий фрагмент может помочь вам:
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
Я считаю, что функция STR является самым чистым средством для достижения этого.
SELECT STR(ceiling(123.415432875), 6, 2)