Simple way is:DECLARE @timeDiff TABLE(StartDate datetime, closeDate DATETIME)insert into @timeDiffSELECT '2012-12-18 08:00:00','2012-12-18 10:00:00' union allSELECT '2012-12-18 07:00:00','2012-12-18 10:00:00' union allSELECT '2012-12-18 07:00:00','2012-12-18 20:00:00' union allSELECT '2012-12-18 08:00:00','2012-12-19 10:00:00' union allSELECT '2012-12-18 07:00:00','2012-12-20 10:00:00' ;with cte AS( SELECT CASE WHEN DATEPART(HH, startDate) < 8 THEN 8 ELSE DATEPART(HH, startDate) END startTime, CASE WHEN DATEPART(HH, closeDate) >= 18 THEN 18 ELSE DATEPART(HH, closeDate) END EndTime, DATEDIFF(dd, startDATE, CloseDate) noOfDays, StartDate, closeDate FROM @timeDiff)SELECT (endtime *(noOfDays+1) - startTime) , StartDate, closeDate FROM cte
For more accuracy check this linkhttp://www.sqlteam.com/forums/topic.asp?TOPIC_ID=176582--Chandu