我们使用 DBAmp 将 Salesforce.com 与 SQL Server 集成(基本上添加了一个链接服务器),并使用 OPENQUERY 对我们的 SF 数据运行查询。
我正在尝试针对机会进行一些报告,并希望在机会所有者本地日期时间(即用户将在 salesforce 中看到的日期时间)返回机会的创建日期。
我们的 dbamp 配置强制日期为 UTC。
我偶然发现了一个日期函数(在 Salesforce 文档中),我认为它可能会有所帮助,但是当我尝试使用它时出现错误,因此无法证明它,下面是 convertTimezone 函数的示例用法:
SELECT HOUR_IN_DAY(convertTimezone(CreatedDate)), SUM(Amount)
FROM Opportunity
GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))
以下是返回的错误:
链接服务器“SALESFORCE”的 OLE DB 提供程序“DBAmp.DBAmp”返回消息“错误 13005:翻译 SQL 语句时出错:第 1:37 行:期待“来自”,找到“(”)。 消息 7350,第 16 层,状态 2,第 1 行 无法从链接服务器“SALESFORCE”的 OLE DB 提供程序“DBAmp.DBAmp”获取列信息。
你能不能在下面的 OPENQUERY 中使用 SOQL 函数?
SELECT
*
FROM
OPENQUERY(SALESFORCE,'
SELECT HOUR_IN_DAY(convertTimezone(CreatedDate)), SUM(Amount)
FROM Opportunity
GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))')
更新:
我刚刚与 Bill Emerson 有过一些通信(我相信他是 DBAmp 集成工具的创建者):
您应该能够使用 SOQL 函数,所以我不确定您为什么会遇到解析失败。我将设置一个测试用例并报告回来。
当我收到回复时,我会再次更新帖子。谢谢