Forum Discussion

Kratchie's avatar
Kratchie
Frequent Visitor
3 years ago
Solved

Calculate duration from fixed date/time

Hi,

 

I've a column with fixed time which begins from 2000-01-01 00:00:00

If we find 2000-01-02 03:10:10 in that column it means 27h, 10 min, 10 sec in duration. How can I calculate and get it as result? 

 

Have a great day

 

 

  • hi Kratchie 

    not sure about your ultimate goal, try this:

    Column =
    VAR _d = TRUNC( [Duration]-DATE(2000,1,1))
    VAR _hms = FORMAT((([Duration]-DATE(2000,1,1))-_d),"HH:MM:SS")
    RETURN _d &" Days " &_hms
     
    I tried and it worked like this:

9 Replies

  • ValtteriN's avatar
    ValtteriN
    Icon for Community Champion rankCommunity Champion

    Hi,

    Here is one way to do this:

    Measure = var _mindate =CALCULATE(MIN('Table (2)'[Column1]),ALL('Table (2)'[Column1]))
    var _h =  DATEDIFF(_mindate,MAX('Table (2)'[Column1]),HOUR)
    var _m = MINUTE(MAX('Table (2)'[Column1]))
    var _s = SECOND(MAX('Table (2)'[Column1]))
    return

    _h & "h " & _m &"m " & _s &"s"


    end result:

     

    I hope this post helps to solve your issue and if it does consider accepting it as a solution and giving the post a thumbs up!

    My LinkedIn: https://www.linkedin.com/in/n%C3%A4ttiahov-00001/

    • Kratchie's avatar
      Kratchie
      Frequent Visitor

      Hi ValtteriN

       

      When I created a new visual table and added only DURATION column with your script it worked like a charm. BUT when i'm adding more columns it stopped to work by any reason. Seems that only timestamps with seconds still works partly (only hours + seconds), but when it's whole hour. It doesnt work?! 

       

      • ValtteriN's avatar
        ValtteriN
        Icon for Community Champion rankCommunity Champion

        Kratchie  hmm, 

        That seems quite weird. The first things that come to my mind are te following:

        1. Are there some other dimension information or slicers affecting the visual? 
        2. Is the data format similar in both your example and the data in question

        When I tried to re-create this the formula worked well even with whole hours and dates across different months:

         



  • Hi Kratchie 

     

    try to create a column with this:

    Column = FORMAT([Duration]-DATE(2000,1,1),"HH:MM:SS")
     
    i tried and it worked like this:
    • Kratchie's avatar
      Kratchie
      Frequent Visitor

      Hi FreemanZ 

       

      Your script works perfectly with hours only. When it's more than 24 hours like 1 day + 6 hour it only shows 6:00

       

      • FreemanZ's avatar
        FreemanZ
        Icon for Super User rankSuper User

        hi Kratchie 

        not sure about your ultimate goal, try this:

        Column =
        VAR _d = TRUNC( [Duration]-DATE(2000,1,1))
        VAR _hms = FORMAT((([Duration]-DATE(2000,1,1))-_d),"HH:MM:SS")
        RETURN _d &" Days " &_hms
         
        I tried and it worked like this:
  • ppm1's avatar
    ppm1
    Icon for Solution Sage rankSolution Sage

    I assume you are later going to aggregate your durations in a measure, so please see this article for a good way to handle durations as decimals (in days) so you can easily do math and use them in visuals, but then display them as hh:mm, etc. when needed.

    Calculate and Format Durations in DAX – Hoosier BI

    Pat

    • Kratchie's avatar
      Kratchie
      Frequent Visitor

      Hi ppm1,

       

      This I have done before without any problem when it's two columns with both start/end date+time (split it into 4 columns (start&date, end&date, start&time, end&time) but now I need to get duration from fixed timestamps as I wrote above which isnt that easy. I have googled for different solutions but couldn't find any.