SQL Server:条件where子句(Equal)OR(LessThan或Equal)

时间:2015-09-21 10:07:08

标签: sql-server variables conditional where

WHERE [Date] <= CASE    
                   WHEN @param = 1 THEN CONVERT(DATE, GETDATE())
                   WHEN @param = 2 THEN DATEADD(DD, 1, GETDATE())

上面的示例传递了变量@param,用于过滤:

  • @param = 1 (今天所有的日子都不到或包括在内)
  • @param = 2 (今天和明天的所有日子都不到或包括在内)
  • @param = 3 (仅限今天)。这需要更改表达式。

问题

在SQL Server中,如何创建一个评估不同相等性的条件where子句?

WHERE [Date] <= 
WHERE [Date] =  

或换句话说:

如何才能在今天添加过滤器?

1 个答案:

答案 0 :(得分:4)

尝试:

where 
    ([date] <= CONVERT(DATE,GETDATE()) and @param = 1) or
    ([date] <= DATEADD(DD, 1, GETDATE()) and @param = 2) or
    ([date] = GETDATE() and @param = 3)