Beastmode - Duration (mins) between 2 Datetime Columns

If I have 2 datetime columns (StartDate & EndDate), how do I find the duration (mins) between the 2 using Beastmode?

 

Example: 

DateTime.JPG

Best Answers

  • AS
    AS Coach
    Answer ✓

    The TIMEDIFF() function will get you the hh:mm:ss value between the two, and the TIME_TO_SEC() function will give you the number of seconds in time.  Nest those two and divide by 60 seconds to get minutes.  See if something like this will work:

     

    TIME_TO_SEC(TIMEDIFF(`EndTime`,`StartTime`)) / 60

    Aaron
    MajorDomo @ Merit Medical

    **Say "Thanks" by clicking the heart in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • user02957
    user02957 Member
    Answer ✓

    Try this. It works for me

     

    NULLIF(DATEDIFF(`metric_set_initially_assigned_at`,`metric_set_created_at`),0)*24*60+NULLIF(HOUR(`metric_set_initially_assigned_at`-`metric_set_created_at`) ,0)*60

     

     

Answers

  • Have you tried TIMESTAMPDIFF(MINUTE, Col1, Col2)? That works in MySQL, not sure if it will in BeastMode though.

  • Or have you tried TIMESTAMP(Col2) - TIMESTAMP(Col1)? (Although some conversion may be necessary to get it into "minutes"...)

  • AS
    AS Coach
    Answer ✓

    The TIMEDIFF() function will get you the hh:mm:ss value between the two, and the TIME_TO_SEC() function will give you the number of seconds in time.  Nest those two and divide by 60 seconds to get minutes.  See if something like this will work:

     

    TIME_TO_SEC(TIMEDIFF(`EndTime`,`StartTime`)) / 60

    Aaron
    MajorDomo @ Merit Medical

    **Say "Thanks" by clicking the heart in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • I haven't. Is MySQL the same as Magic ETL? I tried to lookup a video on this but the video on domo university seems to be from an older version.

  • This worked, thanks.

  • Does this work for multiple days that have lapsed? The example I have is:

     

    Start

    4/1/2016 0:23

    End

    4/8/2016 11:45

     

    When I use 

     

    TIME_TO_SEC(TIMEDIFF(`EndTime`,`StartTime`)) / 60

     

    I don't get the expected results.

  • AS
    AS Coach

    @pravaliya I haven't tried that before, but I would think so.  But only up to a certain point. Time data types have a limit.

     

    TIMEDIFF() will get you the HHH:MM:SS, like 179 hours, 22 min, 0 sec.

     

    So theoretically I think it would calculate that out as (179:22:00 * 3600 s) / 60 s = 10762 minutes .  What are you getting?

    Aaron
    MajorDomo @ Merit Medical

    **Say "Thanks" by clicking the heart in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • I've tried this and i seem to be running into an issue when the difference is greater than 24 hours. it only seems to display 23:59:59. is this a formatting issue? or a limitation of the formula?

  • From what I've found Domo's BeastMode is broken and limiting the delta to what you're seeing. This is not the indended output of the function as per mySQL documentation. I submitted a ticket quite some time ago citing the issue. I had to calculate instead in a mySQL dataflow. Good luck!

  • I'm having the same issue. I tried combining DATEDIFF and TIMEDIFF like:

     

    DATEDIFF(col1,col2)*24*60 + TIME_TO_SEC(TIMEDIFF(col1,col2))*60

     

    but it still isn't working with dates that are less than 24 hours difference, but fall on different calendar days. i.e 10/09/2017 23:00:00 and 10/10/2017 03:00:00. This should give an answer of 240 minutes, but instead I'm getting 1,680 minutes.

     

    I think I'll have to do these calculations on the backend because Domo just doesn't seem to have the ability to easily do a timestamp difference, but someone please correct me if I'm wrong.

  • user02957
    user02957 Member
    Answer ✓

    Try this. It works for me

     

    NULLIF(DATEDIFF(`metric_set_initially_assigned_at`,`metric_set_created_at`),0)*24*60+NULLIF(HOUR(`metric_set_initially_assigned_at`-`metric_set_created_at`) ,0)*60

     

     

  • This code should work for difference between timestamp longer than a day. 

     

    If you had Start Date of 19-Sep-18 2:31:25 and End Date of 20-Sep-18 3:15:22. The time differnce in minutes should be 1483.57( 57 is the seconds).

     

    ((DATEDIFF(`end date`,`start date`)*1440)+(HOUR(TIMEDIFF(`end date`,`start date`))*60)+(MINUTE(TIMEDIFF(`end date`,`start date`)))+((SECOND(TIMEDIFF(`end date`,`start date`)))/100))

  • LJPS77
    LJPS77 Member

    You must use this formula for properly calculation, It will return the number of hours between ClosedDate and SubmitedDate and it works for short and long durations.

    CASE
    WHEN (DATEDIFF(ClosedDate,SubmitDate)*24)=0 THEN (TIME_TO_SEC(TIMEDIFF(ClosedDate, SubmitDate))/60/60)
    WHEN HOUR(SubmitDate) > HOUR(ClosedDate) THEN (DATEDIFF(ClosedDate-1, SubmitDate)*24)+(TIME_TO_SEC(TIMEDIFF(ClosedDate, SubmitDate))/60/60)
    WHEN HOUR(SubmitDate) < HOUR(ClosedDate) THEN (DATEDIFF(ClosedDate, SubmitDate)*24)+(TIME_TO_SEC(TIMEDIFF(ClosedDate, SubmitDate))/60/60)
    WHEN HOUR(SubmitDate) = HOUR(ClosedDate) THEN
    CASE
    WHEN MINUTE(SubmitDate) > MINUTE(ClosedDate) THEN (DATEDIFF(ClosedDate-1, SubmitDate)*24)+(TIME_TO_SEC(TIMEDIFF(ClosedDate, SubmitDate))/60/60)
    WHEN MINUTE(SubmitDate) < MINUTE(ClosedDate) THEN (DATEDIFF(ClosedDate, SubmitDate)*24)+(TIME_TO_SEC(TIMEDIFF(ClosedDate, SubmitDate))/60/60)
    END
    END

  • Jbrorby
    Jbrorby Contributor

    Probably not the most efficient way to go about it but a lot of times when I need time differences in hours or minutes, I just do this:

    datediff(end date, start date) * 1440 (minutes in a day)
    +
    hour(end date) - hour(start date) * 60
    +
    minute(end date) - minute(start date)