programing

tsql에서 소수점 다음에 두 자리를 얻는 방법은 무엇입니까?

jooyons 2023. 8. 23. 21:46
반응형

tsql에서 소수점 다음에 두 자리를 얻는 방법은 무엇입니까?

선택한 열에서 숫자 형식을 지정하는 데 문제가 있습니다.FORMAT을 사용했는데 작동하지 않습니다.내 칼럼은 다음과 같습니다.

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

사용한 항목:

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

오류:

'format'은 인식되는 기본 제공 함수 이름이 아닙니다.

이 계산 형식을 어떻게 지정할 수 있습니까?

한 번 해보세요.

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)

출력:

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

DECTION으로 캐스팅하고 스케일을 2자리로 지정할 수 있습니다.

소수와 숫자

그래서 뭐 그런 거.

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

SQL 중간 데모

그러나 이 작업은 정밀도가 떨어질 수 있으므로 UI/보고서 계층에서 수행하는 것이 좋습니다.

포맷은 UI/Report/Display 수준에서 이루어져야 한다고 생각합니다.

결과를 숫자로 캐스팅해 보십시오.

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

입력

1
2
3

산출량

1.00
2.00
3.00

형식 구문이 잘못되었습니다. 실제 구문은 다음과 같습니다.

 FORMAT ( value, format [, culture ] )

이 링크를 따라가면 도움이 됩니다.

자세한 내용은 여기를 클릭하십시오.

그래서 뭐 그런 거.

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

그러나 이 작업은 정밀도가 떨어질 수 있으므로 UI/보고서 계층에서 수행하는 것이 좋습니다.

@i를 플로트로 선언 = 2 선택 @i / 3 선택 캐스트(@i / 캐스트(3 AS Decimal(18,2))를 소수(18,2))로 지정

요인과 결과 모두 주조를 소수로 간주해야 합니다.

SELECT CAST(12.0910239123 AS DECIMAL(15, 2))

통화 정밀도가 동적이라고 가정합니다.

  • value => 1.002431

  • currency precision => 3

  • '결과 => 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')

언급URL : https://stackoverflow.com/questions/16412231/how-to-get-2-digits-after-decimal-point-in-tsql

반응형