2011-03-08 10 views
6

Jak utworzyć zapytanie SOQL w ten sposób?Zapytanie SOQL GDZIE Data = 30_dni_ago?

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO 

To daje błąd:

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO 
        ^
+0

Czy wykonujesz to zapytanie w wywołaniu usługi internetowej lub w kodzie Apex? Odpowiedź superfell jest poprawna, jeśli jest w Apex. –

+0

Za pośrednictwem usługi internetowej, ale właśnie zadeklarowałem datę w programie i przekazałem ją jako ciąg do zapytania jako konkretnej daty. –

+2

Zakładam, że używasz wierzchołka, ponieważ otagowałeś pytanie wierzchołkiem. – superfell

Odpowiedz

12

Jak robisz to z wierzchołka można obliczyć datę w wierzchołku, następnie wiązania że w zapytaniu, na przykład

date d = system.today().addDays(-30); 
Account [] acc= [select id from account where createdDate = :d]; 
14
SELECT id FROM Account WHERE LastActivityDate = LAST_N_DAYS:30 
7
Select Id from Account Where LastActivityDate = N_DAYS_AGO:30 
+0

Nie mamy N_DAYS_AGO: 30 w salesforce – C0DEPirate

0

Na stronie od daty funkcji SOQL wydaje się być przeniesiony tutaj: https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm

celu wyjaśnienia, SOQL pozwala pole daty (np LastActivityDate) do porównać z datami za pomocą operatora porównania. Tak więc "LastActivityDate = LAST_MONTH" jest równoznaczne z powiedzeniem, że data jest większa lub równa początkowi pierwszego dnia poprzedniego miesiąca ORAZ mniejsza niż lub równa końca ostatniego dnia.

Powiązane problemy