我稍微思考了这一点。在SO上发现了一些问题,但没有一个问题解决了我的问题。
我想要做的是比较表格中的两个日期,我使用案例陈述返回两者中的较大者
select <-- similar code but not actual code
...
case
when date1 > date2 then date1 else date2 end as lastDate
到目前为止一切都很好。我在结果中得到了更大的约会。问题是我想在LastDate上应用WHERE子句。由于lastDate是一个临时列,因此在WHERE子句中我不会接受这个语法
if @cur_date != null <---- this is parameter to my store procedure, if not null then
case when date1 > date then date1 like '2011-%' else date2 like '2011-%'
但是我错误地将'like'关键字错误地收到了错误。我认为在case语句中'then'关键字后面不能返回一个语句。我该怎么做呢?我有使用临时表吗?我想找到最好的方法。
答案 0 :(得分:1)
在WHERE
子句中使用相同的语法:
WHERE case when date1 > date2 then date1
else date2 END
like '2011-%'
修改强>
日期比较的示例代码:
WHERE case when date1 > date2 then CAST(date1 as varchar)
else CAST(date2 as varchar) END
like '2011-%'