框架:ASP.NET网络表单。
我有两个文本框,一个用于输入开始日期时间,另一个用于结束日期时间。我还有一个下拉列表,允许用户在“本地时间”和“ UTC”之间进行选择。
场景是
如果用户在下拉列表中选择“本地时间”,则在@StartDateTime
列的@EndDateTime
和[LocalTimeColumn]
之间检索结果
如果用户在下拉列表中选择“ UTC”,则在@StartDateTime
列的@EndDateTime
和[UTCColumn]
之间检索结果
我编写的SQL查询无效:
SELECT *
FROM [vmc]
WHERE
@DropDownList = CASE
WHEN @DropDownList = "Local Time"
THEN ([LocalTimeColumn] BETWEEN @StartDateTime AND @EndDateTime)
ELSE ([UTCColumn] BETWEEN @StartDateTime AND @EndDateTime)
END
答案 0 :(得分:1)
CASE
表达式(即THEN
和ELSE
之后的谓词)必须是标量值,而不是另一个逻辑表达式。您可以通过轻微的重构使WHERE
子句执行您想要的操作:
SELECT *
FROM [vmc]
WHERE
(@DropDownList = "Local Time" AND
[LocalTimeColumn] BETWEEN @StartDateTime AND @EndDateTime) OR
[UTCColumn] BETWEEN @StartDate AND @EndDate;