SOQL-запрос WHERE Date = 30_days_ago?

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

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO

Это вызывает ошибку:

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO
                      ^

person Dave S    schedule 08.03.2011    source источник
comment
Вы выполняете этот запрос в вызове веб-службы или в коде Apex? Ответ superfell правильный, если он находится в Apex.   -  person Adam Butler    schedule 09.03.2011
comment
Через веб-сервис, но я просто объявил дату в программе и передал ее в виде строки в запрос как конкретную дату.   -  person Dave S    schedule 09.03.2011
comment
Я предположил, что вы используете апекс, поскольку вы отметили вопрос апексом.   -  person superfell    schedule 10.03.2011


Ответы (4)


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

date d = system.today().addDays(-30);
Account [] acc=  [select id from account where createdDate = :d];
person superfell    schedule 08.03.2011
comment
LAST_N_DAYS было бы лучше, поскольку у SOQL уже есть синтаксис для этого, или, может быть, они добавили его позже? - person Aditya Patil; 04.10.2018

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.

person Cory Waz    schedule 04.04.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» эквивалентно утверждению, что дата больше или равна началу первого дня предыдущего месяца И меньше или равна концу последнего дня.

person David Crowe    schedule 17.09.2015

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

SELECT ID FROM Account WHERE LastActivityDate < LAST_N_DAYS:30
person Aditya Patil    schedule 04.10.2018
comment
Я не думаю, что LAST_N_DAYS работает с оператором «‹ ». Я думаю, это работает только с = - person user26270; 06.11.2018
comment
В настоящее время мы используем его с оператором '‹'. getblogname.wordpress.com/2018/10/04/soql-last_n_days -синтаксис - person Aditya Patil; 07.11.2018