Как мне сделать такой запрос SOQL?
SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO
Это вызывает ошибку:
MALFORMED_QUERY:
Account WHERE LastActivityDate = 30_DAYS_AGO
^
Как мне сделать такой запрос SOQL?
SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO
Это вызывает ошибку:
MALFORMED_QUERY:
Account WHERE LastActivityDate = 30_DAYS_AGO
^
Когда вы делаете это из апекса, вы можете вычислить дату в апексе, а затем привязать это к своему запросу, например
date d = system.today().addDays(-30);
Account [] acc= [select id from account where createdDate = :d];
LAST_WEEK
и LAST_MONTH
также просты и хорошо работают.
SELECT id FROM Account WHERE LastActivityDate > LAST_MONTH
Дополнительные данные см. По этой ссылке: http://www.salesforce.com/us/developer/docs/officetoolkit/Content/sforce_api_calls_soql_select_dateformats.htm.
Страница функций даты SOQL, похоже, переместилась сюда: https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm
Чтобы уточнить, SOQL позволяет сравнивать поле даты (например, LastActivityDate) с диапазоном дат с помощью оператора сравнения. Таким образом, «LastActivityDate = LAST_MONTH» эквивалентно утверждению, что дата больше или равна началу первого дня предыдущего месяца И меньше или равна концу последнего дня.
Поскольку это 30 дней назад, вы используете это -
SELECT ID FROM Account WHERE LastActivityDate < LAST_N_DAYS:30