用于日期计算的动态 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
参数).
在动态中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
参数).