Forum Discussion

MYDATASTORY's avatar
MYDATASTORY
Resolver I
5 years ago
Solved

DAX Time calculation between two timestamp

Hi,

Kindly advice with actual Dax formulae to calculate the time difference.

If you're able to provide a sample of DAX based on below dammy data will be great.

The data will be presented in tabular form and also in visualization where Total Duration (HH: MM) will be grouped by ID and Month. Much appreciated in advance.

 

ID Start TimeEnd TimeExpected Result in HH: MM
A01:30:0002:00:3000:30:00 HH: MM
B11:00:0003:30:0004:30:00 HH:MM

Expected Answer A on the table

Total Time: For A=00:30:00HH:MM

Total Time: For B=04:30:00HH:MM
Expected Answer B on the table

Total Time for all IDs =(Total Time: For A=00:30:00HH:MM)+(Total Time: For B=04:30:00HH:MM)=05:00HH:MM

 

4 Replies

  • MYDATASTORY, try this measure:

     

    Time Diff = 
    SUMX ( TestData, TestData[End Time] - TestData[Start Time] )

     

     

     

     

  • Caroline_1900's avatar
    Caroline_1900
    Frequent Visitor

    So that works, but then the time won't sum in a table or matrix. How to fix this?  Please and thank you.

    • DataInsights's avatar
      DataInsights
      Super User

      Caroline_1900,

       

      Try this measure. It's based on a measure in the link below.

       

      https://community.powerbi.com/t5/Community-Blog/Aggregating-Duration-Time/ba-p/22486 

       

      Time Diff = 
      // Given a number of seconds, returns a format of "hh:mm"
      VAR vDuration =
          SUMX ( TimeTracker, DATEDIFF ( TimeTracker[Start_Time], TimeTracker[End_Time], SECOND ) )
      // There are 3,600 seconds in an hour
      VAR vHours =
          INT ( vDuration / 3600 )
      // There are 60 seconds in a minute
      VAR vMinutes =
          INT ( MOD ( vDuration - ( vHours * 3600 ), 3600 ) / 60 )
      // These intermediate variables ensure that we have leading zeros concatenated onto single digits
      // Hours with leading zeros
      VAR vHoursFormatted =
          IF ( LEN ( vHours ) = 1, "0" & vHours, "" & vHours )
      // Minutes with leading zeros
      VAR vMinutesFormatted =
          IF ( LEN ( vMinutes ) = 1, "0" & vMinutes, "" & vMinutes )
      // Now return hours and minutes with leading zeros in the proper format "hh:mm"
      VAR vResult =
          vHoursFormatted & ":" & vMinutesFormatted
      RETURN
          IF ( vResult = ":", BLANK(), vResult )

       

       

      • Caroline_1900's avatar
        Caroline_1900
        Frequent Visitor

        Thank you v v much.  It works.  It works well.  It works really well!  IT WORKS!!! 🤣

        Please accept my apologies for the delay in responding.  PowerApps design is not my full-time work. But this project is something that I have to make work for me to continue.