我有一个使用getdate()函数存储日期的表。 例如
convert(char(7),dateadd(day,-28,GETDATE()), 120) + '-01'
我已经构建了一个存储过程,我从表中获取数据
DECLARE kursor SCROLL CURSOR FOR
SELECT file_name_date_from, file_name_date_to
FROM [dbo].[table]
ORDER BY id
OPEN kursor;
FETCH NEXT FROM kursor INTO @f_name_date_from, @f_name_date_to;
WHILE @@FETCH_STATUS = 0
问题在于,当我尝试
时execute sp_executesql N'select @data', N'@data varchar(200)', @data = @f_name_date_from;
我得到了从表格中获取的内容,但我希望得到计算日期。
问题是如何根据提取的表达式设置变量@f_name_date_from和@f_name_date_to计算值。
答案 0 :(得分:0)
试试这个:
SELECT cast(file_name_date_from as date), cast(file_name_date_to as date)
FROM [dbo].[table]
ORDER BY id
为什么让它变得复杂呢?
答案 1 :(得分:0)
我找到了解决方案。下面的工作代码示例:
DECLARE
@SQLString NVARCHAR(200)
,@ParmDefinition NVARCHAR(200)
,@f_name_date_to_out VARCHAR(30)
,@f_name_date_to VARCHAR (100) = 'convert(char(10),dateadd(day,-28,GETDATE()),120)' -- apostrophes are important here, because after fetching data from table they always appear in variable.
,@data_do VARCHAR (30)
SET @SQLString = N'SELECT @DataOUT ='+ @f_name_date_to
SET @ParmDefinition = '@DataOUT varchar(100) OUTPUT'
EXECUTE sp_executesql
@SQLString,
@ParmDefinition,
@DataOUT=@f_name_date_to_out OUTPUT
SET @data_do = @f_name_date_to_out;
SELECT @data_do
感谢您的帮助:)