SQL Server 2012案例语句语法

时间:2014-12-09 23:53:09

标签: sql-server

我有以下案例陈述,我将日期时间字段转换为YYYYMM,然后再添加1。但数据类型似乎是一个问题。

case when convert(varchar(6), max_bdda_open_dt, 112) <= convert(varchar(6), referral_dt, 112) + 1 then 'Yes' else 'No' end as BDDA_Open

当我删除+1并将<=更改为=时,查询会运行。我尝试将上面的varchar更改为int,但我仍然遇到同样的错误。

+1的错误如下。我不确定为什么会这样说&#39; 2014-1&#39;下面。当我单独运行convert语句时,我的日期时间将转换为201401格式。

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '2014-1' to data type int.

2 个答案:

答案 0 :(得分:1)

无需先转换为字符串。

case 
   when cast(max_bdda_open_dt as date) <= dateadd(month, 1, cast(referral_dt as date)) then 'Yes' 
   else 'No' 
end as BDDA_Open

如果两个字段都是数据类型Date,那么您可以删除强制转换。

答案 1 :(得分:0)

您是否尝试过将这两种转换为int:

转换时的情况(int,convert(varchar(6),max_bdda_open_dt,112))&lt; = convert(int,convert(varchar(6),referral_dt,112))+ 1然后'是'否则'否'结束为BDDA_Open

应该有效