cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Nazeem81 Regular Visitor
Regular Visitor

Sum of duration

I have time values in format HH:MMSmiley FrustratedS and I would like to be able to summarize values in that format. I found code below which is working, but the format is DD:HH:MMSmiley FrustratedS, for example 34days02:59:27.

But I dont want to show the summary in days, I want to show total hours, minutes and seconds. Instead of  34days02:59:27 it should show 818:59:27

 

Anyone who can help me solve this?

 

newDuration =

VAR TotalSeconds=SUMX('Tiddata';HOUR('Tiddata'[CopyDuration])*3600+MINUTE('Tiddata'[CopyDuration])*60+SECOND('Tiddata'[CopyDuration]))

VAR Days =TRUNC(TotalSeconds/3600/24)

VAR Hors = TRUNC((TotalSeconds-Days*3600*24)/3600)

VAR Mins =TRUNC(MOD(TotalSeconds;3600)/60)

VAR Secs = MOD(TotalSeconds;60)

return IF(DAYS=0;"";IF(DAYS>1;DAYS&"days";Days&"day"))&IF(Hors<10;"0"&Hors;Hors)&":"&IF(Mins<10;"0"&Mins;Mins)&":"&IF(Secs<10;"0"&Secs;Secs)

1 ACCEPTED SOLUTION

Accepted Solutions
ChrisHaas Established Member
Established Member

Re: Sum of duration

Try this:

newDuration =
VAR TotalSeconds =
    SUMX (
        'Tiddata';
        HOUR ( 'Tiddata'[CopyDuration] ) * 3600
            + MINUTE ( 'Tiddata'[CopyDuration] ) * 60
            + SECOND ( 'Tiddata'[CopyDuration] )
    )
VAR Hors =
    TRUNC ( TotalSeconds / 3600 )
VAR Mins =
    TRUNC ( MOD ( TotalSeconds; 3600 ) / 60 )
VAR Secs =
    MOD ( TotalSeconds; 60 )
RETURN
    IF ( Hors < 10; "0" & Hors; Hors )
        & ":"
        & IF ( Mins < 10; "0" & Mins; Mins )
        & ":"
        & IF ( Secs < 10; "0" & Secs; Secs )

 

I changed the Hors variable to 

VAR Hors =
TRUNC ( TotalSeconds / 3600 )

and then removed any code having to do with the Days variable.

3 REPLIES 3
ChrisHaas Established Member
Established Member

Re: Sum of duration

Try this:

newDuration =
VAR TotalSeconds =
    SUMX (
        'Tiddata';
        HOUR ( 'Tiddata'[CopyDuration] ) * 3600
            + MINUTE ( 'Tiddata'[CopyDuration] ) * 60
            + SECOND ( 'Tiddata'[CopyDuration] )
    )
VAR Hors =
    TRUNC ( TotalSeconds / 3600 )
VAR Mins =
    TRUNC ( MOD ( TotalSeconds; 3600 ) / 60 )
VAR Secs =
    MOD ( TotalSeconds; 60 )
RETURN
    IF ( Hors < 10; "0" & Hors; Hors )
        & ":"
        & IF ( Mins < 10; "0" & Mins; Mins )
        & ":"
        & IF ( Secs < 10; "0" & Secs; Secs )

 

I changed the Hors variable to 

VAR Hors =
TRUNC ( TotalSeconds / 3600 )

and then removed any code having to do with the Days variable.

Nazeem81 Regular Visitor
Regular Visitor

Re: Sum of duration

Hi ChrisHaas,

 

It's working Smiley Happy

 

This really made my day, I really needed this to start off the week right Smiley Very Happy

 

 

BR

Nazeem

Nazeem81 Regular Visitor
Regular Visitor

Re: Sum of duration

Hi again,

 

The problem I have now is that the new measure is not working with the date table I have. The total value for a specific date is correct, but in the table I can see all the all values for all dates and not only the one I selected in a filter. This is the case only for the created measu newDuration, for other measures in table Tiddata the date table is working fine. See issue in table below:

 

Skärmklipp.PNG