Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hi.
I'm trying to create a calculated column in a table to give a yes/no (or 1/0) to show if the difference between 2 date/time fields is <= 24 hours.
I need to exclude weekends and bank holidays - I have a dimdate table with weekends and bank holidays flagged.
A working day is 24 hours.
I'm having problems writing the dax to do this due to the time element.
This is an example of fields and output:
Any ideas on how to calcuate the 'In timescale' column? Many thanks
Solved! Go to Solution.
Hi @Florie
Great question! Calculating a “within timescale” column that excludes weekends and bank holidays (using a dimdate table) is a classic DAX challenge. Here’s a step-by-step method:
You’ll need to sum hours on valid working days between [Start] and [Completion], ignoring weekends and bank holidays.
Here’s a sample DAX calculated column for your table (let’s call it [In Timescale]):
In Timescale =
VAR StartDateTime = [Start]
VAR EndDateTime = [Completion]
VAR DatesBetween =
FILTER (
'DimDate',
'DimDate'[Date] >= DATEVALUE(StartDateTime)
&& 'DimDate'[Date] <= DATEVALUE(EndDateTime)
&& 'DimDate'[IsWeekend] = FALSE()
&& 'DimDate'[IsBankHoliday] = FALSE()
)
VAR WorkingHours =
SUMX (
DatesBetween,
VAR ThisDate =
'DimDate'[Date]
VAR StartHour =
IF (
ThisDate = DATEVALUE(StartDateTime),
HOUR(StartDateTime) + MINUTE(StartDateTime)/60,
0
)
VAR EndHour =
IF (
ThisDate = DATEVALUE(EndDateTime),
HOUR(EndDateTime) + MINUTE(EndDateTime)/60,
24
)
RETURN
EndHour - StartHour
)
RETURN IF(WorkingHours <= 24, "Yes (or 1)", "No (or 0)")Let me know if you need the DAX for a specific edge case or have a different working hours definition!
translation and formatting supported by AI
Thank you!
Hi @Florie
Great question! Calculating a “within timescale” column that excludes weekends and bank holidays (using a dimdate table) is a classic DAX challenge. Here’s a step-by-step method:
You’ll need to sum hours on valid working days between [Start] and [Completion], ignoring weekends and bank holidays.
Here’s a sample DAX calculated column for your table (let’s call it [In Timescale]):
In Timescale =
VAR StartDateTime = [Start]
VAR EndDateTime = [Completion]
VAR DatesBetween =
FILTER (
'DimDate',
'DimDate'[Date] >= DATEVALUE(StartDateTime)
&& 'DimDate'[Date] <= DATEVALUE(EndDateTime)
&& 'DimDate'[IsWeekend] = FALSE()
&& 'DimDate'[IsBankHoliday] = FALSE()
)
VAR WorkingHours =
SUMX (
DatesBetween,
VAR ThisDate =
'DimDate'[Date]
VAR StartHour =
IF (
ThisDate = DATEVALUE(StartDateTime),
HOUR(StartDateTime) + MINUTE(StartDateTime)/60,
0
)
VAR EndHour =
IF (
ThisDate = DATEVALUE(EndDateTime),
HOUR(EndDateTime) + MINUTE(EndDateTime)/60,
24
)
RETURN
EndHour - StartHour
)
RETURN IF(WorkingHours <= 24, "Yes (or 1)", "No (or 0)")Let me know if you need the DAX for a specific edge case or have a different working hours definition!
translation and formatting supported by AI
@Florie Create a calculated column to determine if the difference between Start and Completion is within 24 hours, excluding weekends and bank holidays.
dax
InTimescale =
VAR StartDateTime = 'YourTable'[Start]
VAR CompletionDateTime = 'YourTable'[Completion]
VAR StartDate = DATE(YEAR(StartDateTime), MONTH(StartDateTime), DAY(StartDateTime))
VAR CompletionDate = DATE(YEAR(CompletionDateTime), MONTH(CompletionDateTime), DAY(CompletionDateTime))
VAR WorkingDays =
CALCULATE(
COUNTROWS('DimDate'),
'DimDate'[Date] >= StartDate,
'DimDate'[Date] <= CompletionDate,
'DimDate'[IsWorkingDay] = TRUE()
)
VAR TotalHours =
IF(
WorkingDays = 1,
DATEDIFF(StartDateTime, CompletionDateTime, HOUR),
(WorkingDays - 2) * 24 +
(24 - HOUR(StartDateTime) - MINUTE(StartDateTime) / 60) +
HOUR(CompletionDateTime) + MINUTE(CompletionDateTime) / 60
)
RETURN
IF(TotalHours <= 24, 1, 0)
Proud to be a Super User! |
|
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 38 | |
| 36 | |
| 33 | |
| 31 | |
| 28 |
| User | Count |
|---|---|
| 129 | |
| 88 | |
| 79 | |
| 68 | |
| 63 |