我想查询数据库以检查日期是否在两个日期的范围内。有一个开始日期和结束日期。基本上,我想使用BETWEEN
关键字显示值。
我希望日期格式也匹配。说@date1
是20150520
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 ...这不是我对条件分支的期望。
答案 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