Невозможно извлечь год из createDate в запросе SOQL - PullRequest
0 голосов
/ 11 февраля 2020
SELECT House__r.Name, House__r.House_Owner__r.person__r.Email__c, (SELECT Name, Total_Balance__c, Total_Expense__c FROM Expenses__r Where Type__c='Yearly' AND AND CALENDAR_YEAR(CreatedDate) =  CALENDAR_YEAR(System.today() )   FROM Member__c

Ошибка => Неизвестная ошибка синтаксического анализа.

Пожалуйста, предложите, что еще можно сделать.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

(на мобильном устройстве форматирование будет плохим, извините)

SOQL поддерживает только стиль "field - operator - value_or_function" для условий. Вы пытаетесь сделать его "function - operator - another function", won ' t работа.

Для вашего конкретного сценария попробуйте с помощью WHERE Created date = THIS_YEAR. Это специальный литерал, см. https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm

Более обобщенный c способ будет написать то, что вам нужно в качестве поля формулы, вы можете сравнить с YEAR (TODAY ()). (это может быть низкая производительность для фильтрации по формуле, часто это приводит к полному сканированию таблицы, вам придется протестировать, возможно, добавить больше фильтров, используя индексированные столбцы ...).

Или напишите это как WHERE CreatedDate >= :start AND CreatedDate <= :stop, поместите правильные переменные связывания для вашего диапазона.

0 голосов
/ 11 февраля 2020

У вас есть два «И» подряд. Кроме того, если вы используете редактор запросов, вы не можете использовать System.today ().

...