我有一个名为 FunctionValue 的字符串列字段。
此字段可以包含 DATEADD(datepart, number, date)
或 GETDATE()
或其他内容。
例如,如果是DATEADD(year, 3, GETDATE())
我希望稍后在 SP 运行时期间执行此操作,并将值保存在名为 @FunctionValue
的变量中。
SET @FunctionValue = ( SELECT CASE
WHEN FunctionValue LIKE 'DATEADD%' THEN --???
WHEN FunctionValue LIKE 'GETDATE' THEN CAST(GETDATE() AS nvarchar(255))
ELSE FunctionValue
END AS FV
FROM @TSV_WithTarget
我不确定需要在那里放什么来实现,以便无论值是什么,DATEADD
函数的结果都会返回并保存在@FunctionValue<中
.
最佳答案
单向;
--modify field or add an assignment
declare @sql nvarchar(128) = 'set @result = ' + 'DATEADD(year, 3, GETDATE())'
declare @FunctionValue datetime
exec sp_executesql @sql, N'@result datetime output', @FunctionValue output
select @FunctionValue
提前需要该类型,否则您可以做一些难看的事情,例如显式转换为 sql_variant。
关于保存在字段中的 SQL 函数 - 如何执行 DATEADD()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16014634/