怎么把8点到8点按一天计算

如何把8点到8点按一天计算
企业是两班倒的,早八点上到晚八点是早班,反之为夜班。现在想把某个月的记录提取出来,如何提取。

现语句:select * from table1 where  year(adddate)= year(@cdate)  and  month(adddate)=month(@cdate) 

这样的的语句就会把 @cdate 这个月的所有记录找了出来,而1号的早8点之前是不能算到这个月的,而下个月1号的早8点前的数据应算入本月。这样的sql怎么写呀。
------解决思路----------------------
select * from table1 where  adddate between dateadd(HH,8,CONVERT(nvarchar(7),@cdate,23)+'-01') and dateadd(MM,1,dateadd(HH,8,CONVERT(nvarchar(7),@cdate,23)+'-01'))
------解决思路----------------------
DECLARE @cdate datetime
SET @cdate = GETDATE()

-- 算出日期范围
DECLARE @startDate datetime
DECLARE @endDate datetime
SET @startDate = CONVERT(datetime,
                         CONVERT(varchar(7),@cdate,120)+'-01 08:00',
                         120)
SET @endDate = DATEADD(month,1,@startDate)
--SELECT @startDate, @endDate

-- 用范围查找可以利用索引
SELECT *
  FROM table1
 WHERE adddate >=  @startDate
   AND adddate < @endDate

@startDate              @endDate
----------------------- -----------------------
2015-10-01 08:00:00.000 2015-11-01 08:00:00.000