是否可以在DATEADD区间参数中使用case表达式?
select DATEADD(case c1 when 1 then HOUR when 2 then DAY end, c2, date) from T
Update1 :抱歉,我想在where子句
中使用它select * from T where DATEADD(case c1 when 1 then HOUR when 2 then DAY end, c2, date) < GETDATE()
也许还有另一种选择。
提前致谢,
答案 0 :(得分:3)
尝试以下..
select * from T
where case c1 when 1 then DATEADD(HOUR, c2, date)
when 2 then DATEADD(DAY, c2, date)
end < Getdate()
答案 1 :(得分:2)
不,您无法参数化DATEADD
的datepart
参数:
下表列出了所有有效的 datepart 参数。用户定义的变量等效项无效。
您必须使用两个不同的DATEADD
表达式,或更改您的逻辑:
select DATEADD(hour, c2 * case c1 when 1 then 1 when 2 then 24 end, date) from T
答案 2 :(得分:0)
您可以在没有CASE
select * from T
where c1=1 AND DATEADD(hour, c2, date) < getdate()
or c1=2 AND DATEADD(day, c2, date) < getdate()