Как преобразовать int столбец во времени "ЧЧ: ММ" в SQL? - PullRequest
0 голосов
/ 28 июня 2019

как я могу преобразовать int "Час" и Int "Минута" во время, а затем получить проценты двух разных времен?

, чтобы получить общее времяиз столбца int Я использую

Format((SUM([THOURS]) * 3600 + SUM([TMINUTES]) * 60 + SUM([TSECONDS])) / 3600,'00')+':'+Format((SUM([THOURS]) * 3600 + SUM([TMINUTES]) * 60 + SUM([TSECONDS])) % 3600/60,'00') as "Total Time"

Я получил идеальное время из вышеприведенного запроса.

Но теперь я хочу получить процентное вычисление от моих двух int "Час" и Int "Минута" таблица столбцов.enter image description here

Я пробовал

DECLARE @MS INT = 235216
select cast(dateadd(ms, @MS, '00:00:00') AS TIME(3))

Это не работает, как мое требование.

У кого-нибудь есть идея для того же?

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Преобразуйте ваши поля времени в минуты, а затем сделайте математику в минутах. В этом примере используются две переменные - вместо этого вы должны использовать имена полей.

Declare
    @Allotted As Time = '08:00'
    , @Taken As Time = '06:00'

    Select Cast(DateDiff(Minute, '00:00', @Taken) As Numeric(17, 2)) / DateDiff(Minute, '00:00', @Allotted) as Percent_Of_Allotted_Time
0 голосов
/ 28 июня 2019

Возможно, это поможет:

declare @A table 
  ( xHours int, xMinutes int, xSeconds int, 
    yHours int, yMinutes int, ySeconds int  )

insert into @A ( xHours, xMinutes, xSeconds, yHours, yMinutes, ySeconds ) values
( 7, 23, 59, 13, 44, 51 ),
( 0, 00, 12,  1, 07, 00 );

with A as ( select *, 
            3600 * xHours + 60 * xMinutes + xSeconds as xTotal,
            3600 * yHours + 60 * yMinutes + ySeconds as yTotal 
            from @A ),
B as ( select *, 
       cast ( DATEADD(second,xTotal,'00:00:00') as time(0)) as xTime,
       cast ( DATEADD(second,yTotal,'00:00:00') as time(0)) as yTime
 from A ),
C as ( select *, 100*CAST(xTotal as float)/CAST(yTotal as float) as Usage from B )
select xTotal, yTotal, xTime, yTime, Usage from C

Результат:

xTotal  yTotal     xTime     yTime  Usage
 26639   49491  07:23:59  13:44:51  53.8259481521893
    12    4020  00:00:12  01:07:00  0.298507462686567
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...