【发布时间】:2014-07-12 06:40:46
【问题描述】:
我正在尝试执行以下查询:
Declare @Range varchar(20) = '2'
SELECT mydate from tbl_details
where
CASE WHEN @Range = '1' THEN mydate between convert(Datetime, '12/07/2013') and convert(Datetime, '12/07/2014')
ELSE
DATEDIFF(DD, CONVERT(Datetime, mydate), GETDATE()) <=
DATEDIFF(dd, GETDATE(), (GETDATE()+ CONVERT(Integer, @Range))) END
但它正在抛出错误
Incorrect syntax near the keyword 'between'
如果我单独提出查询,它们可以正常工作,如下所示:
Declare @Range varchar(20) = '2'
SELECT mydate from tbl_details
where DATEDIFF(DD, CONVERT(Datetime, mydate), GETDATE()) <=
DATEDIFF(dd, GETDATE(), (GETDATE()+ CONVERT(Integer, @Range)))
或
Declare @Range varchar(20) = '2'
SELECT mydate from tbl_details
where
mydate between convert(Datetime, '12/07/2013') and convert(Datetime, '12/07/2014')
【问题讨论】:
-
乔的回答已经足够了,所以我不会把它作为答案发布,但基本上你错的是大小写语法(就像错误所说的那样)。案例的工作方式如下:案例何时(条件)然后(结果)否则(其他结果)结束。你把条件放在应该是结果的地方。
标签: sql-server tsql datetime case between