我的问题是为什么? 在以下情况下,SQL正在做什么导致此错误消息。
堆栈上有一些这样的查询,但通常是因为缺少 DateAdd()。 在这里,我只是尝试将作为审计注释字符串的一部分传递的日期放在记录中。 我并不是特别要求这两个变量一起玩并给我一个结果。
以下是问题行。 在底部对上下文进行更完整的查询。
@Days INT,@Date日期
"从 ' + @Date + ''扩展到 ' + @Days + ' 的索赔
,SELECT TOP 1
ID,
WorkFlowStatusCode ,
'Number of days: ' + @Days + ' from ' + @Date + '.' ,
@UserId ,
@UserId
FROM dbo.Table
WHERE ID= @VariableA
ORDER BY ID DESC;
我发现将 Convert() 中的@Date包装为 103 可以解决这个问题。 见下文。
'对索赔的扩展 ' + @Days + ' 从 ' +CONVERT(NVARCHAR(10),@Date,103) + '." ,
我只是想从 SQL/数据库的角度理解为什么在这种情况下我需要这样做。 我无法在网上找到答案来帮助我理解。
非常感谢所有评论。
李
大概@Day
是一个整数。 请记住,+
可能意味着加法和字符串连接,因此SQL可能会混淆。 试试这个:
'Number of days: ' + convert(varchar(255), @Days) + ' from ' + convert(varchar(10), @Date, 103) + '.'
笔记:
- 使用
varchar()
或nvarchar()
时,请始终包括长度。 SQL Server 的默认长度因上下文而异。 不包括长度是创建非常难以调试的错误的一种简单方法。 - 代码建议
varchar()
而不是nvarchar()
,因为字符串的其余部分不是国家/地区字符集。