2011-03-08 28 views
6

Làm cách nào để tạo truy vấn SOQL như thế này?Truy vấn SOQL WHERE Date = 30_days_ago?

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO 

Điều này tạo ra một lỗi:

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO 
        ^
+0

Bạn đang thực hiện truy vấn này trong cuộc gọi dịch vụ web hoặc trong mã Apex? Câu trả lời của superfell là chính xác nếu điều này là trong Apex. –

+0

Thông qua một dịch vụ web, nhưng tôi đã khai báo ngày tháng trong chương trình và chuyển nó thành một chuỗi cho truy vấn dưới dạng một ngày cụ thể. –

+2

Tôi cho rằng bạn đang sử dụng đỉnh, khi bạn gắn thẻ câu hỏi với đỉnh. – superfell

Trả lời

12

Khi bạn đang làm điều này từ đỉnh, bạn có thể tính ngày trong đỉnh, sau đó liên kết đó vào truy vấn của bạn, ví dụ

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

Chúng tôi không có N_DAYS_AGO: 30 trong lực lượng bán hàng – C0DEPirate

0

Trang chức năng ngày SOQL dường như đã di chuyển ở đây: https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select_dateformats.htm

Để làm rõ, SOQL cho phép một lĩnh vực ngày (ví dụ LastActivityDate) để được so sánh với một phạm vi ngày sử dụng toán tử so sánh. Vì vậy, "LastActivityDate = LAST_MONTH" tương đương với việc nói rằng ngày lớn hơn hoặc bằng ngày bắt đầu của ngày đầu tiên của tháng trước đó và nhỏ hơn hoặc bằng với kết thúc của ngày cuối cùng.

Các vấn đề liên quan