Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
CarlBlunck
Resolver I
Resolver I

Hours between timestamps

Hi team,

 

I need to get the hours in decimals between two timestamps.  What is the M code for this?

 

Example:

SHIFTSTARTDATETIMESHIFTENDDATETIMEHours
9/11/2022 2:45:00 PM9/11/2022 11:15:00 PM8.5
1/12/2022 10:30:00 PM2/12/2022 7:00:00 AM8.5

 

Thanks

Carl

2 ACCEPTED SOLUTIONS
CarlBlunck
Resolver I
Resolver I

Solved this through a few steps:

 

#"Added Custom" = Table.AddColumn(#"Inserted Time1", "Custom", each [SHIFTENDDATETIME]-[SHIFTSTARTDATETIME]),
#"Inserted Hours" = Table.AddColumn(#"Added Custom", "Hours", each Duration.Hours([Custom]), Int64.Type),
#"Inserted Minutes" = Table.AddColumn(#"Inserted Hours", "Minutes", each Duration.Minutes([Custom]), Int64.Type),
#"Added Custom1" = Table.AddColumn(#"Inserted Minutes", "Hours (30 min lunch)", each ([Hours]+([Minutes]/60))-.5),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Custom", "Hours", "Minutes"})

View solution in original post

Ah yes, correct! Then use the Duration.TotalSeconds: https://learn.microsoft.com/en-us/powerquery-m/duration-totalseconds

It will be easier to use I think.

View solution in original post

5 REPLIES 5
CarlBlunck
Resolver I
Resolver I

Solved this through a few steps:

 

#"Added Custom" = Table.AddColumn(#"Inserted Time1", "Custom", each [SHIFTENDDATETIME]-[SHIFTSTARTDATETIME]),
#"Inserted Hours" = Table.AddColumn(#"Added Custom", "Hours", each Duration.Hours([Custom]), Int64.Type),
#"Inserted Minutes" = Table.AddColumn(#"Inserted Hours", "Minutes", each Duration.Minutes([Custom]), Int64.Type),
#"Added Custom1" = Table.AddColumn(#"Inserted Minutes", "Hours (30 min lunch)", each ([Hours]+([Minutes]/60))-.5),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Custom", "Hours", "Minutes"})

_AlexandreRM_
Helper II
Helper II

Hello @CarlBlunck , I think that what you need is one of the Duration functions. See documentation here: https://learn.microsoft.com/en-us/powerquery-m/duration-seconds

 

Your function could look like:

hours = Duration.Seconds(dateTime1-dateTime2) / 3600

 

Hope this helps.

Alexandre

Thanks @_AlexandreRM_ unfortuately all of the duration functions just extract the portion of the duration out.  So duration.seconds will just give you the seconds of the calculated duration.  Which in my case, returns 0.

Ah yes, correct! Then use the Duration.TotalSeconds: https://learn.microsoft.com/en-us/powerquery-m/duration-totalseconds

It will be easier to use I think.

Ha it pays to scroll down and read the rest of the available functions list.  Thank mate, much cleaner.  Went with the Duration.TotalHours function as still gives decimals.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

Top Solution Authors
Top Kudoed Authors