SELECT
DateAdd(hour,hour_diff, ps) punch_start,
DateAdd(hour,hour_diff, ps1) punch_end
FROM [dbo].[Stage]
CROSS APPLY
(
values (Try_Convert(datetime, punch_start),Try_Convert(datetime, punch_end))
) x (ps,ps1)
left join
[dbo].[DIM] d on
ps between d.start_dt and d.end_dt
OR
ps1 between d.start_dt and d.end_dt