intersystems-cacheintersystemsintersystems-cache-studio

Difference between two date time stamp in Intersystems Cache


I would like to find out the number of hours and minutes between two date time stamp.

if for example

 sDateTime = 2016-01-01 01:00 
 eDateTime = 2016-01-03 02:30

I would like it to output it as 49:30 (49hours and 30minutes) I am unable to figure a method to work this out.

what I have so far:

    Set oMNOF=##class(MNOF.MNOF).%OpenId(Id)

Set zstartDt=oMNOF.sDateTime 
Set startDt=$PIECE(zstartDt,",",1)          
Set startTime=$PIECE(zstartDt,",",2)    

Set zendDt=oMNOF.eDateTime 
Set endDt=$PIECE(zendDt,",",1)          
Set endTime=$PIECE(zendDt,",",2) 

    set dateDiff=((endDt - startDt))     //2 days 
set timeDiff=(endTime - startTime)    //outputs 5400 seconds

     set d = (dateDiff * 24 * 60 * 60)
set h = ((timeDiff - d) / 60)
set m = timeDiff - (d) - (h * 60)

Thank you for the help.


Solution

  • Another option:

    USER>set mm=$system.SQL.DATEDIFF("mi","2016-01-02 01:00","2016-01-03 02:30")
    
    USER>write "hours=", mm \ 60
    hours=25
    USER>write "minutes=", mm # 60
    minutes=30