如何检查SQL中的日期范围?

时间:2015-05-14 18:56:55

标签: sql sql-server tsql

我想查询数据库以检查日期是否在两个日期的范围内。有一个开始日期和结束日期。基本上,我想使用BETWEEN关键字显示值。

我希望日期格式也匹配。说@date120150520

DECLARE @startdate DATE
DECLARE @enddate DATE
DECLARE @date1 DATE
DECLARE @finaldate VARCHAR(1)

SET @startdate = DATEADD(DAY, -5, GETDATE())
SET @enddate = GETDATE()
SET @date1 = '20150520'



SELECT record FROM table1
WHERE @date1 < @enddate AND @date1 > @startdate

这似乎有道理。虽然当我尝试使用IF条件时,我使用下面的代码获取NULL:

IF @date1 > @startdate AND @date1 < @enddate
BEGIN
SET @finaldate = '1'
END
ELSE IF @date1 > @enddate
BEGIN
SET @finaldate = '2'
END

SELECT @finaldate AS Final_Date

虽然由于某种原因,@finaldate等于NULL ...这不是我对条件分支的期望。

1 个答案:

答案 0 :(得分:0)

如果您要覆盖所有基础,则需要在该条件下添加其他分支:

ELSE IF @date1 <= @startdate

您只测试了两个日期之间的1)和2)大于上一个日期。其中至少有一个应该包括一个平等检查,否则,如果你的日期相同,你就不会匹配。

现在,你可以最后使用一个普通的旧ELSE块来捕捉所有内容,但我怀疑你实际上正在寻找更像的东西:

IF @date1 > @startdate AND @date1 < @enddate
    BEGIN
        SET @finaldate = '1'
    END
ELSE IF @date1 >= @enddate
    BEGIN
        SET @finaldate = '2'
    END
ELSE IF @date1 <= @startdate
    BEGIN
        SET @finaldate = '3'
    END

SELECT @finaldate AS Final_Date