为什么在修改日期时失败的情况

时间:2016-12-12 15:56:12

标签: sql sql-server

我需要在第1天和第14天之间返回1,并根据当天返回first day of next month其他任何内容。

我可以在声明时运行非常基本的案例:

select 
case when datepart(d, getdate()) between 2 and 14 then '1'
      else '1st next month' end

按预期返回下个月的1或1,我也可以轻松获得下个月的实际第一天:

select DATEADD(d, 1, EOMONTH(getdate())) 

但是当我把它结合起来。它没有返回任何东西 - 没有错误,也没有结果 无论今天是哪一天

select 
case when datepart(d, getdate()) between 2 and 14 then '1'
      else DATEADD(d, 1, EOMONTH(getdate()))  end

你知道为什么吗?

1 个答案:

答案 0 :(得分:2)

为避免数据类型不匹配,请将其输出为text:

select 
  case 
    when datepart(d, getdate()) between 2 and 14 then '1'
    else convert(varchar, DATEADD(d, 1, EOMONTH(getdate())),120)
  end