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