SQLSERVER2008兼容级别由80调整至100遇到问题

icecar 2010-09-03 02:50:30
我将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,问题解决,上述语句正常。
哪位大侠有遇到类似的问题?或者说该问题产生的原因是什么呢?
...全文
420 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
obuntu 2010-09-03
  • 打赏
  • 举报
回复
兼容级别为80时:

日期时间内部函数(如 DATEPART)不需要字符串输入值,即可成为有效的日期时间文字。例如,SELECT DATEPART (year, '2007/05-30') 可以成功编译。

兼容级别为100时:
日期时间内部函数(如 DATEPART)需要字符串输入值,才能成为有效的日期时间文字。在使用无效的日期时间文字时,会返回错误 241。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧