SQL between in case in where 子句

SQL between in case in where clause

我尝试编写一个查询,其中 return 数据 Date_column 在参数结果和参数 -12 个月之间,当参数不为空或 Date_column 不为空,而参数为无效的。你能帮助我吗? 我尝试了很多变体,但总是有一些错误。

declare @my_date DateTime
select * from MyTable
where 
case when @my_date is null 
           then Date_column is not null
           else Date_column between @my_date and DATEADD(MONTH, -12, @my_date)
           end

你像下面这样写你的条件,没有 case 表达式

  where (Date_column is not null and  @my_date is null ) or 
     (Date_column between  DATEADD(MONTH, -12, @my_date) and @my_date)