SQL是:
execute ('delete from HttpRequests where Date < ''2009-08-' + convert(nvarchar(max), 0) + '''')
错误是
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'convert'.
注释掉转换部分会删除错误。怎么了?
答案 0 :(得分:12)
将“执行”替换为“打印”,删除括号,然后运行,即可获得
delete from HttpRequests where Date < '2009-08-0'
这不是一个有效的日期。
答案 1 :(得分:3)
EXECUTE (@stringvariable)
不允许连接比@stringvariable1 + @stringvariable2
你必须这样做:
DECLARE @sql nvarchar(4000)
SELECT @sql = 'delete from HttpRequests where Date < ''2009-08-' + convert(nvarchar(4000), 0) + '''
EXECUTE (@sql)
然而,你有无效的日期错误......我也修复了引用错误......
答案 2 :(得分:2)
声明没有错。 SQL根本不允许将CONVERT表达式的结果传递给EXEC。我找不到任何相关文档,但很多人都报告了这种行为。
http://www.eggheadcafe.com/software/aspnet/34917755/pass-result-of-convert-as.aspx
答案 3 :(得分:1)
您似乎没有创建有效日期。
select 'delete from HttpRequests where Date < ''2009-08-' + convert(nvarchar(max), 0)
+''''
会给你:从HttpRequests中删除Date&lt; '2009-08-0'
答案 4 :(得分:-2)
查询日期,例如yyyyMMdd,并将最大值放在[]。
之间