我有一个使用标准查询和打开查询的函数。
CREATE function [dbo].[udf_funcForAll](@DateFrom datetime, @DateTo datetime, @param smallint)
returns table
as
return (
select * from [dbo].[udf_func] ('2016-10-01','2017-03-15',0)
union all
select * from openquery(l1,'select * from [dbo].[udf_func] (''2016-10-01'',''2017-03-15'',''0'')')
union all
select * from openquery(l1,'select * from [dbo].[udf_func] (''2016-10-01'',''2017-03-15'',''0'')')
union all
select * from openquery(l2,'select * from [dbo].[udf_func] (''2016-10-01'',''2017-03-15'',''0'')')
我想在我的查询中使用我的参数@ DateFrom,@ DateTo和@param。
当我尝试使用以下查询创建过程时,我收到错误:"从字符串转换日期和/或时间时转换失败。 "
declare @DateFrom DateTime = '2016-10-01'
declare @param int = 1
declare @sqlquery nvarchar(max) = 'select * from [dbo].[udf_func] ('''+@DateFrom+''',''2017-03-15'','+@param+')'
如何将查询中的dateTime作为变量传递?
答案 0 :(得分:0)
您必须在nvarchar中转换all或将其转换为nvarchar。 sql不能+多种数据类型。以此为例:
declare @DateFrom NVARCHAR(100) = '2016-10-01'
declare @param NVARCHAR(100) = 1
DECLARE @sqlquery nvarchar(max) = 'select * from [dbo].[udf_func] ('''+@DateFrom+''',''2017-03-15'', '+@param+')'