【发布时间】:2014-08-11 17:33:53
【问题描述】:
这样的事情可以在 SQL 存储过程中执行吗?还是我必须有 3 个单独的程序?这可以单独工作,但现在我只收到一个错误:关键字'between'附近的语法不正确。
FROM table a
WHERE
field1 = 'asd'
and field2 is null
and field3 not in ('a','b','c')
and
case @input
when 'now' then
(a.datefield between dateadd(day, -31, getdate()) and getdate())
when '24_hour' then
(a.datefield between getdate() and dateadd(hour, 24, getdate()))
when '3_days' then
(a.datefield between getdate() and dateadd(day, 3, getdate()))
end
order by a.datefield asc
end
【问题讨论】:
-
你的问题不清楚。请详细说明。你想做什么?
-
@DH__ 似乎很清楚:他希望最后通过
@input的值切换 where 子句中的检查。 -
是的,添加了更多信息以使其更清晰。但我不确定是否可以根据输入设置 where 条件。如果中间条件相同,我可以在 getdate() 和 dateadd(hour, @input, getdate())) 之间执行 WHERE a.datefield 之类的操作。但它也会改变今天日期之前的行
标签: sql sql-server stored-procedures