我将SQLSERVER2008的数据库兼容级别由80调整至100后,运行下面的语句报错:
declare @rq date 
set @rq='2010-08-31' SELECT DateDiff (dd,@rq,sxrq)
FROM DW_SPPH
WHERE rq=@rq and isdate(sxrq)=1消息 241,级别 16,状态 1,第 4 行
从字符串转换日期和/或时间时,转换失败。经过漫长的排错,终于想到调整了兼容级别,将兼容界别调回80,问题解决,上述语句正常。
哪位大侠有遇到类似的问题?或者说该问题产生的原因是什么呢?

解决方案 »

  1.   

    兼容级别为80时:日期时间内部函数(如 DATEPART)不需要字符串输入值,即可成为有效的日期时间文字。例如,SELECT DATEPART (year, '2007/05-30') 可以成功编译。兼容级别为100时:
     日期时间内部函数(如 DATEPART)需要字符串输入值,才能成为有效的日期时间文字。在使用无效的日期时间文字时,会返回错误 241。