Мы используем DBAmp для интеграции Salesforce.com с SQL Server (который в основном добавляет связанный сервер) и выполняем запросы к нашим SF-данным с использованием OPENQUERY.
Я пытаюсь составить некоторые отчеты повозможностей и хотят вернуть созданную дату возможности в локальное время владельцев владельцев возможностей (т.е. дату, которую пользователь увидит в 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".
Вы не можете использовать функции SOQL в OPENQUERY, как показано ниже?
SELECT
*
FROM
OPENQUERY(SALESFORCE,'
SELECT HOUR_IN_DAY(convertTimezone(CreatedDate)), SUM(Amount)
FROM Opportunity
GROUP BY HOUR_IN_DAY(convertTimezone(CreatedDate))')
ОБНОВЛЕНИЕ:
Я только что переписывался с Биллом Эмерсоном (я полагаю, он является создателем инструмента интеграции DBAmp):
Вы должныбыть в состоянии использовать функции SOQL, поэтому я не уверен, почему вы получаете ошибку разбора.Я настрою тестовый случай и сообщу.
Я обновлю сообщение снова, когда получу ответ.Спасибо