结果返回零

RW *_*ond 1 sql t-sql sql-server

不知道我在这里缺少什么.

我使用以下代码

DECLARE @sqlText nvarchar(4000)
SET @sqlText = N'SELECT InitialComment, DATEDIFF(d, InitialComment, GETDATE() ) AS Duration FROM dbo.SocialManagementTracker;'

DECLARE @newVal nvarchar(4000)
SET @newVal = ''

exec sp_executesql @sqlText, @newVal out

UPDATE dbo.SocialManagementTracker
SET DaysToResolve = @newVal
WHERE SocialID = 2
Run Code Online (Sandbox Code Playgroud)

比较日期为2018/07/08和2018/08/31.我的结果应该是23.为什么这会返回0而不是?

scs*_*mon 6

我在这里看不到动态sql的任何原因...这应该工作正常:

UPDATE dbo.SocialManagementTracker
SET DaysToResolve =  DATEDIFF(day, InitialComment, GETDATE() )
WHERE SocialID = 2
Run Code Online (Sandbox Code Playgroud)

  • 我会在这个优秀的答案中添加一个标注.请注意,他使用了"DATEDIFF(天"而不是速记"DATEDIFF(d"?简写的东西可能令人难以置信的混淆,通常首选使用全名.https://sqlblog.org/2011/09/20/坏习惯到开球使用-速记与 - 日期 - 时间的操作 (3认同)