我正在尝试使用openquery
按日期过滤结果来运行选择,但是在 where 子句之后使用日期时遇到问题。
理想情况下,我希望能够传递一个变量
set @d = dateadd(day, -30, getdate())
但为了举例,我将尝试使用指定的日期:
例子:
select *
from OPENQUERY([Linked_Server], 'select id, name from Users where LastModifiedDate > ''2017-01-01''')
这将返回一个错误:
INVALID_FIELD:
选择 id, name from Users where LastModifiedDate > '2017-01-01'
字段 'LastModifiedDate' 过滤条件的值必须是 dateTime 类型,不应用引号括起来”。
例如istrue = true
,如果我使用它可以正常工作,但比较日期似乎是问题所在。
有人可以就此给我建议吗?
看起来您查询的链接服务器不是标准的 SQL Server,而是 Salesforce,它使用 SOQL,它具有特定的日期和日期时间文字格式。Salesforce 中日期过滤器的正确格式是:
WHERE LastModifiedDate > 2017-01-01T00:00:00Z
所以你的完整 SQL 应该是:
SELECT *
FROM OPENQUERY(
[Linked_Server],
'SELECT id, name FROM Users WHERE LastModifiedDate > 2017-01-01T00:00:00Z')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句