Как получить 2 цифры после десятичной точки в tsql?
У меня возникла проблема с форматированием цифр в моем столбце select. Я использовал 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' не является признанным встроенным именем функции.
Как я могу отформатировать этот расчет?
Ответы
Ответ 1
Попробуйте этот вариант -
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
Ответ 2
Вы можете отправить его в DECIMAL и указать масштаб в 2 цифры
десятичная и цифровая
Итак, что-то вроде
DECLARE @i AS FLOAT = 2
SELECT @i / 3
SELECT CAST(@i / 3 AS DECIMAL(18,2))
Я бы рекомендовал, чтобы это было сделано в слое UI/Report, поскольку это приведет к потере точности.
Форматирование (на мой взгляд) должно происходить на уровне интерфейса/отчета/отображения.
Ответ 3
Попробуйте применить результат к числовому
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
Ответ 4
Синтаксис синтаксиса не соответствует действительности.
FORMAT ( value, format [, culture ] )
Пожалуйста, следуйте этой ссылке, это поможет вам
Нажмите здесь для получения более подробной информации
Ответ 5
Итак, что-то вроде
DECLARE @i AS FLOAT = 2
SELECT @i / 3
SELECT CAST(@i / 3 AS DECIMAL(18,2))
Я бы рекомендовал, чтобы это было сделано в слое UI/Report, так как это приведет к потере точности.
Ответ 6
Пример:
выберите CAST (12.0910239123 как десятичный (15,2))
Ответ 7
Предположим, что у вас есть динамическая точность валюты
-
value => 1.002431
-
currency precision => 3
-
`result = > 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')