2011-03-08 9 views
6

मैं इस तरह एक SOQL क्वेरी कैसे बना सकता हूं?SOQL क्वेरी कहां दिनांक = 30_days_ago?

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO 
        ^
+0

क्या आप इस क्वेरी को वेब सेवा कॉल या एपेक्स कोड में निष्पादित कर रहे हैं? सुपरफेल का जवाब सही है अगर यह एपेक्स में है। –

+0

एक webservice के माध्यम से, लेकिन मैंने अभी कार्यक्रम में तारीख घोषित की है और इसे एक विशिष्ट तिथि के रूप में क्वेरी के लिए एक स्ट्रिंग के रूप में पारित किया है। –

+2

मुझे लगता है कि आप शीर्ष का उपयोग कर रहे थे, क्योंकि आपने शीर्ष पर प्रश्न टैग किया था। – superfell

उत्तर

12

आप शीर्ष से यह कर रहे हैं के रूप में, आप शीर्ष में तारीख की गणना कर सकते, तो बाँध आपकी क्वेरी, उदा में:

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO 

यह एक त्रुटि पैदा करता है

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 बिक्री बल में – C0DEPirate

0

SOQL तारीख कार्यों के पृष्ठ यहाँ स्थानांतरित कर दिया गया लगता है: https://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" यह कहने के बराबर है कि तिथि पिछले महीने के पहले दिन की शुरुआत से अधिक या बराबर है और अंतिम दिन के अंत से कम या उसके बराबर है।