我正在运行链接查询,并且我很难将注入计算的变量注入OPENQUERY
调用。在OpenQuery调用中使用datetime变量转换失败
我已经找到了一些解决方案在这里对堆栈溢出,似乎指向一个数据类型不匹配,但我不能复制OPENQUERY
呼叫之外的错误,所以它的混乱给我。
这里是有问题的查询:
SELECT name
FROM OPENQUERY ([OLTP\SQL2014],
'USE master; DECLARE @FROMDATE datetime2(7) = dateadd(dd, -10, Sysdatetime());
DECLARE @ToDate datetime2(7) = sysdatetime();
EXEC (''SELECT name from sys.tables
INNER JOIN sys.partitions
ON sys.tables.object_id = sys.partitions.object_id
WHERE sys.tables.create_date BETWEEN '''' + @FromDate + '''' AND '''' + @ToDate +
'''' AND sys.tables.name LIKE ''''%EXCEPTION%''''
AND NOT sys.tables.name LIKE ''''%AUDIT''''
AND sys.partitions.rows <> 0 '')'
)
我需要放弃内部OPENQUERY
使用的变量?
你为什么要使用SYSDATETIME当你声明与datetime数据类型的变量? – CPMunich
经常进行更精确的测量(与GetDate()相反)。任何理由我不应该? –
当然,但你可能想使用datetime2(7)数据类型而不是datetime – CPMunich