Eu preciso converter minutos para horas, arredondado para 2 casas decimais. Também preciso exibir apenas até 2 números após o ponto decimal. Então, se eu tiver minutos como 650, então as horas devem ser 10,83
Aqui está o que eu tenho até agora:
Select round(Minutes/60.0,2) from ....
Mas, neste caso, se meus minutos são, digamos, 630 horas, são 10,5000000. Mas eu quero apenas 10,50 (após o arredondamento). Como faço para conseguir isso?
Respostas:
Não foi possível transmitir o resultado como
numeric(x,2)
? Ondex <= 38
Devoluções
fonte
SELECT ROUND(630/60.0, 2);
me dá10.50
.cast(630/60.0 as numeric(36,2))
é10,50
Assim como no SQL Server 2012, você pode usar a função de formato interno :
(apenas para leituras adicionais ...)
fonte
1,757.47
você pode usar
fonte
fonte
fonte
fonte
Funciona tanto no postgresql quanto no Oracle
fonte
A consulta a seguir é útil e simples
Dá saída como 0,25.
fonte
O que quer que você use na denominação deve ser decimal, por exemplo
1548/100
, dará15.00
Se substituirmos
100
por100.0
nosso exemplo, obteremos15.48
fonte
Converta seu número para um
Numeric
ouDecimal
.Substitua sua consulta pelo seguinte.
Servidor SQL
MySql:
A
Cast
função é um invólucro para aConvert
função. Junte isso ao fato de o SQL ser uma linguagem interpretada e o resultado é que, embora as duas funções produzam os mesmos resultados, há um pouco mais nos bastidores daCast
função. O uso daConvert
função é uma pequena economia, mas pequenas economias se multiplicam.fonte
tente isto:
SELECT CAST(ROUND([Amount 1]/60,2) AS DECIMAL(10,2)) as TOTAL
fonte
Como complemento das respostas abaixo, ao usar tipos de dados INT ou não-decimais em suas fórmulas, lembre-se de multiplicar o valor por 1 e o número de casas decimais que você preferir.
ie -
TotalPackages
é umINT
e, portanto, o denominadorTotalContainers
, mas quero que meu resultado tenha até 6 casas decimais.portanto:
fonte
O seguinte trecho pode ajudá-lo:
fonte
Acho que a função STR é o meio mais limpo de conseguir isso.
fonte