SOQL-запрос ГДЕ Дата = 30_days_ago? - PullRequest
7 голосов
/ 09 марта 2011

Как мне сделать запрос SOQL подобным образом?

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO

Это приводит к ошибке:

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO
                      ^

Ответы [ 6 ]

17 голосов
/ 29 марта 2011
SELECT id FROM Account WHERE LastActivityDate = LAST_N_DAYS:30
13 голосов
/ 09 марта 2011

Когда вы делаете это из apex, вы можете вычислить дату в apex, а затем связать ее с вашим запросом, например,

date d = system.today().addDays(-30);
Account [] acc=  [select id from account where createdDate = :d];
7 голосов
/ 11 июля 2012
Select Id from Account Where LastActivityDate = N_DAYS_AGO:30
1 голос
/ 04 апреля 2015

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

0 голосов
/ 04 октября 2018

Поскольку это 30 дней назад, вы используете это -

SELECT ID FROM Account WHERE LastActivityDate < LAST_N_DAYS:30
0 голосов
/ 17 сентября 2015

Страница функций даты 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» равносильно тому, что дата больше или равна началу первого дня предыдущего месяца И меньше или равна концу последнего дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...