用于日期计算的动态 SQL 查询

DynamicSQL query for date calculation

在动态中SQL我需要计算日期和数字的差异

运行 以下查询时出错,

Declare @sqlstring VARCHAR(MAX)

Declare @GCValue INT

Set @GCValue=10

set @sqlstring = 'SELECT Id, getdate() - (FirstDate + ' + @GCValue +' ) from
Table where Id=1234'

EXECUTE(@Sqlstring)

例如假设 GetDate() = 2019 年 7 月 26 日和 FirsDate = 2019 年 7 月 1 日和@GCValue=10

查询应 return 上述天数差异,即 2019 年 7 月 26 日 -(2019 年 7 月 1 日 + 添加 10 天,因此变成 11July2019)= 15 天。

无论你的原因是什么,这里有一个解决方案(不是一个优雅的 :-) )假设 SQL 服务器: DECLARE @sqlstring VARCHAR(MAX); DECLARE @GCValue varchar(10); SET @GCValue = '10'; SET @sqlstring = 'SELECT Id, DATEDIFF(dd, getdate(), FirstDate + ' + @GCValue + ' ) from Table where Id=1234'; EXECUTE(@sqlstring);

您必须将@GCValue 的数据类型更改为 varchar(或将其从 int 显式转换为 cast(@GCValue as varchar(10)),以便在字符串连接操作中使用它。并且您可以使用 DateDiff 计算天数差异( dd 参数).