2011-03-08 19 views
6

このようにSOQLクエリを作成するにはどうすればよいですか?SOQLクエリWHERE Date = 30_days_ago?

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO 

これは、エラー生成します。あなたは頂点からこれをやっていると

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO 
        ^
+0

WebサービスコールまたはApexコードでこのクエリを実行していますか?これがApexにあれば、スーパーフェルの答えは正しい。 –

+0

Webサービス経由で、プログラムの日付を宣言し、それを特定の日付としてクエリに文字列として渡しました。 –

+2

私はあなたが頂点を使って質問にタグ付けしたように、あなたが頂点を使用していると仮定しました。 – superfell

答えて

12

を、あなたは、例えば、あなたのクエリにそれをバインドし、その後、頂点に日付を計算することができます

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

私たちはN_DAYS_AGO:30をsalesforceに持っていません – C0DEPirate

0

LAST_WEEKLAST_MONTHも簡単で、うまく機能します。 SOQLの日付関数のページはここに移動したように見える

0

http://www.salesforce.com/us/developer/docs/officetoolkit/Content/sforce_api_calls_soql_select_dateformats.htmhttps://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm

を明確にするためには、SOQLは、日付フィールドを可能にする(例えばLastActivityDate)に、より多くのデータについては

SELECT id FROM Account WHERE LastActivityDate > LAST_MONTH 

は、このリンクを見て比較演算子を使用して日付の範囲と比較されます。したがって、 "LastActivityDate = LAST_MONTH"は、日付が前の月の最初の日の開始時と同じかそれ以上で、最後の日の終了以下であると言うことと同等です。