Задача преобразования десятичного значения в ЧЧ.ММ. 0,33333 Десятичное значение не отображается как 00,20 минут - PullRequest
0 голосов
/ 06 августа 2020

У меня проблема с преобразованием десятичной дроби, например 0,33333, которая должна отображаться как 20 минут. Используя формулу, которая у меня есть, это показывает как 19 минут. Надеюсь, кто-нибудь может помочь, пожалуйста. Спасибо. В настоящее время я использую пример кода.

declare @value float = 0.3333333
select
Cast(CONVERT(VARCHAR, CONVERT(INT, Floor(cast(@VALUE as Decimal (10,2))))) 
            + '.' + CONVERT (VARCHAR, CONVERT(INT, (cast(@value as Decimal (10,2)) - Floor(cast(@VALUE as Decimal (10,2)))) * 60.0)) as Decimal(10,2)) [hh.mm],
            cast(@value as money) [DecimalHours]

Ответы [ 2 ]

1 голос
/ 06 августа 2020
 -- integer part      -- fractional part             -- final rounding
cast(floor(@value) + ((@value - floor(@value)) * 0.6) as dec(18,2))

Работает более 24 часов

1 голос
/ 06 августа 2020

Вероятно, намного проще, если вы используете функцию даты / времени:

SELECT FORMAT( DATEADD(n,ROUND(60.0 * @value,0) ,0) , 'HH:mm')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...