Vraag hoe krijg je 2 cijfers achter de komma in tsql?


Ik heb problemen met het formatteren van cijfers in mijn geselecteerde kolom. Ik heb FORMAT gebruikt maar het werkt niet. Dit is mijn column:

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

Ik gebruikte dit:

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

FOUT:

'format' is geen erkende functienaam.

Hoe kan ik deze berekening opmaken?


33
2018-05-07 06:03


oorsprong


antwoorden:


Probeer deze -

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)

Output:

----------------------
6,68
6.68
6.68
67
67

78
2018-05-07 06:13



Je zou het naar DECIMAL kunnen werpen en de schaal op 2 cijfers kunnen aangeven

decimaal en numeriek

Dus, zoiets

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

SQLFiddle DEMO

Ik zou echter aanbevelen dat dit in de UI / Report-laag wordt gedaan, omdat dit het verlies van precisie zal voorkomen.

Formatteren (naar mijn mening) zou moeten gebeuren op het UI / Report / Display-niveau.


9
2018-05-07 06:07



Probeer resultaat uit te brengen naar numeriek

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

Invoer

1
2
3

uitgang

1.00
2.00
3.00


2
2018-05-07 07:30



Uw notatiesyntaxis is verkeerd, de werkelijke syntaxis is

 FORMAT ( value, format [, culture ] )

Volg deze link om u te helpen

Klik hier voor meer details


1
2018-05-07 06:21



Dus, zoiets

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

Ik zou echter aanbevelen dat dit in de UI / Report-laag wordt gedaan, omdat dit het verlies van precisie zal voorkomen.


0
2018-06-02 13:10



DECLARE @i ALS FLOAT = 2 SELECTEER @i / 3 SELECT cast (@i / cast (3 AS DECIMAL (18,2)) als decimaal (18,2))

Zowel factor als resultaat vereist dat casting als decimalen wordt beschouwd.


0
2018-04-24 05:08



Monster: selecteer CAST (12.0910239123 als decimaal (15,2))


-1
2017-12-06 21:20



Stel dat u dynamische valutaprecisie heeft

  • value => 1.002431

  • currency precision => 3

  • `resultaat => 1.002

CAST(Floor(your_float_value) AS VARCHAR) + '.' + REPLACE(STR(FLOOR((your_float_value FLOOR(your_float_value)) * power(10,cu_precision)), cu_precision), SPACE(1), '0')


-2
2017-08-29 08:12