Sql 根据StartDate和EndDate查询行

Sql 根据StartDate和EndDate查询行,sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,我想检索给定开始日期和结束日期之间的WeekIDs 比如说,, 起始日期=2014-01-20 结束日期=2014-02-20 所以,结果应该是。。。201404、201405、201406、201407、201408 我试图像下面那样运行查询,但它返回空白 DECLARE @StartDate DATETIME DECLARE @EndDate DATETIME SET @StartDate = '20140120' SET @EndDate = '20140220' SELECT

我想检索给定开始日期和结束日期之间的WeekIDs

比如说,, 起始日期=2014-01-20 结束日期=2014-02-20

所以,结果应该是。。。201404、201405、201406、201407、201408

我试图像下面那样运行查询,但它返回空白

DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME

SET @StartDate = '20140120'
SET @EndDate = '20140220'

SELECT 
    WeekID
FROM
    dbo.DimWeeks
WHERE
    (@StartDate >= FirstDayOfTheWeek 
    AND @EndDate <= LastDayOfTheWeek)
DECLARE@StartDate-DATETIME
声明@EndDate-DATETIME
设置@StartDate='20140120'
设置@EndDate='20140220'
挑选
小孩
从…起
dbo.DimWeeks
哪里
(@StartDate>=星期一)

并且@EndDate查询工作正常,您没有得到任何记录,因为没有带有
firstDayOfWeek=20140220
的行

也许你想要这个:

WHERE
    ( FirstDayOfTheWeek >= @StartDate
 AND  LastDayOfTheWeek  <= @EndDate)
在哪里
(星期一>=@StartDate

而上周我想这就是你想要的:

where @StartDate <= LastDayOfTheWeek and
      @EndDate >= FirstDayOfTheWeek
其中@StartDate=firstdayofweek
当一个在另一端之前开始,而第一个在另一端之后开始时,两个间隔重叠