So i am trying to count the amount of hours between two dates excluding hours on weekends.
SELECT
(DATEDIFF(HOUR,'2019-08-23 03:00:00', '2019-08-25 09:00:00'))
-(DATEDIFF(wk, '2019-08-23 03:00:00', '2019-08-25 09:00:00') * 2 * 24)
-(CASE WHEN DATENAME(dw, '2019-08-23 03:00:00') = 'Sunday' THEN 24 ELSE 0 END)
-(CASE WHEN DATENAME(dw, '2019-08-25 09:00:00') = 'Saturday' THEN 24 ELSE 0 END)
as 'expecting 21 hours'
,
(DATEDIFF(HOUR,'2019-08-23 03:00:00', '2019-08-26 07:00:00') )
-(DATEDIFF(wk, '2019-08-23 03:00:00', '2019-08-26 07:00:00') * 2 * 24)
-(CASE WHEN DATENAME(dw, '2019-08-23 03:00:00') = 'Sunday' THEN 24 ELSE 0 END)
-(CASE WHEN DATENAME(dw, '2019-08-26 07:00:00') = 'Saturday' THEN 24 ELSE 0 END)
as 'expecting 28 hours'
,
(DATEDIFF(HOUR,'2019-08-24 03:00:00', '2019-08-26 07:00:00') )
-(DATEDIFF(wk, '2019-08-24 03:00:00', '2019-08-26 07:00:00') * 2 * 24)
-(CASE WHEN DATENAME(dw, '2019-08-24 03:00:00') = 'Sunday' THEN 24 ELSE 0 END)
-(CASE WHEN DATENAME(dw, '2019-08-26 07:00:00') = 'Saturday' THEN 24 ELSE 0 END)
as 'expecting 7 hours'
The caluclation is wrong as the output is
expecting 21 hours | expecting 28 hours | expecting 7 hours
6 | 28 | 4
So it seems as i have to handle the times of the dates somwhow better, but how?