web-dev-qa-db-fra.com

comment obtenir 2 chiffres après le point décimal en sql?

J'ai des problèmes pour formater les chiffres dans ma colonne de sélection.J'ai utilisé FORMAT mais cela ne fonctionne pas .

sum(cast(datediff(second, IEC.CREATE_DATE, IEC.STATUS_DATE) as float) / 60) TotalSentMinutes    

J'ai utilisé ceci:

FORMAT(sum(cast(datediff(second, IEC.CREATE_DATE, IEC.STATUS_DATE) as float) / 60),2) TotalSentMinutes  

ERREUR: 

'format' n'est pas un nom de fonction intégré reconnu.

Comment puis-je formater ce calcul?

35
cihata87

Essaye celui-là -

DECLARE @i FLOAT = 6.677756

SELECT 
      ROUND(@i, 2)
    , FORMAT(@i, 'N2')
    , CAST(@i AS DECIMAL(18,2))
    , SUBSTRING(PARSENAME(CAST(@i AS VARCHAR(10)), 1), PATINDEX('%.%', CAST(@i AS VARCHAR(10))) - 1, 2)
    , FLOOR((@i - FLOOR(@i)) * 100)

Sortie:

----------------------
6,68
6.68
6.68
67
67
88
Devart

Vous pouvez le convertir en DECIMAL et spécifier une échelle de 2 chiffres

décimal et numérique

Donc, quelque chose comme

DECLARE @i AS FLOAT = 2
SELECT @i / 3
SELECT CAST(@i / 3 AS DECIMAL(18,2))

SQLFiddle DEMO

Je recommanderais toutefois que cela soit fait dans la couche UI/Report, car cela entraînerait une perte de précision. 

Le formatage (à mon avis) devrait se produire au niveau de l'interface utilisateur/rapport/affichage.

11
Adriaan Stander

Essayez le résultat de conversion en numérique

CAST(sum(cast(datediff(second, IEC.CREATE_DATE, IEC.STATUS_DATE) as float) / 60)
    AS numeric(10,2)) TotalSentMinutes

Contribution



Sortie

1,00 
2,00 
3,00 

2
Mandeep Singh

Votre syntaxe de format est incorrecte. La syntaxe réelle est

 FORMAT ( value, format [, culture ] )

S'il vous plaît suivez ce lien, il vous aide 

Cliquez ici pour plus de détails

1
Deniyal Tandel

Donc, quelque chose comme

DECLARE @i AS FLOAT = 2
SELECT @i / 3
SELECT CAST(@i / 3 AS DECIMAL(18,2))

Je recommanderais toutefois que cela soit fait dans la couche UI/Report, car cela entraînerait une perte de précision.

0
889832

DECLARE @i AS FLOAT = 2SELECT @i/3SELECT cast (@i/cast (3 AS DECIMAL (18,2)) sous forme décimale (18,2))

Le facteur et le résultat exigent que la fonte soit considérée comme un nombre décimal.

0
Leon Poh