Je dois convertir les minutes en heures, arrondies à 2 décimales.J'ai également besoin d'afficher uniquement 2 chiffres après le signe décimal. Donc, si j’ai des minutes à 650. Les heures devraient être de 10,83.
Voici ce que j'ai jusqu'à présent:
Select round(Minutes/60.0,2) from ....
Mais dans ce cas, si mes minutes sont, disons, 630 heures, 10,5000000. Mais je le veux à 10,50 seulement (après avoir arrondi). Comment puis-je y arriver?
Ne pourriez-vous pas convertir votre résultat sous la forme numeric(x,2)
? Où x <= 38
select
round(630/60.0,2),
cast(round(630/60.0,2) as numeric(36,2))
Résultats
10.500000 10.50
vous pouvez utiliser
select cast((630/60.0) as decimal(16,2))
Declare @number float = 35.44987665;
Select round(@number,2)
DECLARE @porcentaje FLOAT
SET @porcentaje = (CONVERT(DECIMAL,ABS(8700)) * 100) / CONVERT(DECIMAL,ABS(37020))
SELECT @porcentaje
CAST(QuantityLevel AS NUMERIC(18,2))
Tout ce que vous utilisez en dénomination devrait être en décimal, par exemple, 1548/100
donnera 15.00
Si nous remplaçons 100
par 100.0
dans notre exemple, nous obtiendrons 15.48
select 1548/100
15.00000
select 1548/100.0
15.4800
0
Convertissez votre numéro en Numeric
ou Decimal
.
Remplacez votre requête par la suivante.
serveur SQL
Select Convert(Numeric(38, 2), Minutes/60.0) from ....
MySql:
Select Convert(Minutes/60.0, Decimal(65, 2)) from ....
La fonction Cast
est un wrapper pour la fonction Convert
. Ajoutez à cela SQL avec un langage interprété et le résultat est que même si les deux fonctions produisent les mêmes résultats, il se passe un peu plus dans les coulisses de la fonction Cast
. L'utilisation de la fonction Convert
représente une petite économie, mais de petites économies se multiplient.
La requête suivante est utile et simple
declare @floatExchRate float;
set @floatExchRate=(select convert(decimal(10, 2), 0.2548712))
select @floatExchRate
Donne une sortie de 0,25.
Fonctionne à la fois avec postgresql et Oracle
SELECT ename, sal, round(((sal * .15 + comm) /12),2)
FROM emp where job = 'SALESMAN'
En complément des réponses ci-dessous, lorsque vous utilisez des types de données INT ou non décimaux dans vos formules, n'oubliez pas de multiplier la valeur par 1 et le nombre de décimales que vous préférez.
c'est-à-dire - TotalPackages
est un INT
et donc le dénominateur TotalContainers
, mais je souhaite que mon résultat comporte jusqu'à 6 décimales.
ainsi:
((m.TotalPackages * 1.000000) / m.TotalContainers) AS Packages,
essayez ceci: SELECT CAST(ROUND([Amount 1]/60,2) AS DECIMAL(10,2)) as TOTAL
L'extrait suivant pourrait vous aider:
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
Je trouve que la fonction STR est le moyen le plus propre de le faire.
SELECT STR(ceiling(123.415432875), 6, 2)