[英]SOQL - Convert Date To Owner Locale
我们使用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))
以下是返回的错误:
OLE DB provider "DBAmp.DBAmp" for linked server "SALESFORCE" returned message "Error 13005 : Error translating SQL statement: line 1:37: expecting "from", found '('". Msg 7350, Level 16, State 2, Line 1 Cannot get the column information from OLE DB provider "DBAmp.DBAmp" for linked server "SALESFORCE".
不能在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 Integration Tool的创建者):
您应该能够使用SOQL函数,所以我不确定为什么会出现解析失败。 我将设置一个测试用例并进行报告。
收到回复后,我将再次更新帖子。 谢谢
刚刚发布了新版本的DBAmp(2.14.4),该版本解决了在openquery中使用ConvertTimezone的问题。
版本2.14.4
- 修改代码以提高内存利用率
- 添加了对API 24.0(SPRING 12)的支持
- 修复了字符串文字中嵌入问号的问题
- 解决了在openquery中使用ConvertTimezone的问题
- 修复了在openquery中使用聚合函数时出现的“无效数值”问题
我非常确定,因为DBAmp使用SQL而不是SOQL,所以SOQL函数将不可用,对不起。
您将需要以其他方式公开此数据。 Salesforce报表 , Web服务或通过用于访问(DBAmp)SQL Server的程序来编译数据,也许是可能的。
如果要创建Salesforce Web服务,以下示例可能会有所帮助。
global class MyWebService
{
webservice static AggregateResult MyWebServiceMethod()
{
AggregateResult ar = [
SELECT
HOUR_IN_DAY(convertTimezone(CreatedDate)) Hour,
SUM(Amount) Amount
FROM Opportunity
GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))];
system.debug(ar);
return ar;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.