【问题标题】:Query rows Depending on StartDate and EndDate根据 StartDate 和 EndDate 查询行
【发布时间】:2014-03-31 23:10:52
【问题描述】:

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

例如, 开始日期 = 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)

【问题讨论】:

    标签: sql tsql sql-server-2012


    【解决方案1】:

    查询正确,您没有得到任何记录,因为没有FirstDayOfTheWeek &lt;= 20140120 和LastDayOfTheWeek &gt;= 20140220 的行。

    也许你想要这个:

    WHERE
        ( FirstDayOfTheWeek >= @StartDate
     AND  LastDayOfTheWeek  <= @EndDate)
    

    【讨论】:

      【解决方案2】:

      我想这就是你想要的:

      where @StartDate <= LastDayOfTheWeek and
            @EndDate >= FirstDayOfTheWeek
      

      当一个在另一个结束之前开始并且第一个在另一个开始之后结束时,两个间隔重叠。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-16
        • 2017-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-14
        相关资源
        最近更新 更多