Salesforce SOQL查询,其中日期=30天前?

Salesforce SOQL查询,其中日期=30天前?,salesforce,apex-code,soql,Salesforce,Apex Code,Soql,如何进行这样的SOQL查询 SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO 这会产生一个错误: MALFORMED_QUERY: Account WHERE LastActivityDate = 30_DAYS_AGO ^ 当您从apex执行此操作时,您可以在apex中计算日期,然后将其绑定到查询中,例如 date d = system.today().addDays(-30

如何进行这样的SOQL查询

SELECT id FROM Account WHERE LastActivityDate = 30_DAYS_AGO
这会产生一个错误:

MALFORMED_QUERY: 
Account WHERE LastActivityDate = 30_DAYS_AGO
                      ^

当您从apex执行此操作时,您可以在apex中计算日期,然后将其绑定到查询中,例如

date d = system.today().addDays(-30);
Account [] acc=  [select id from account where createdDate = :d];

最后一周
最后一个月
也很容易,而且效果很好

SELECT id FROM Account WHERE LastActivityDate > LAST_MONTH

有关更多数据,请查看此链接:

SOQL日期函数的页面似乎已移至此处:


为了澄清这一点,SOQL允许使用比较运算符将日期字段(例如LastActivityDate)与一系列日期进行比较。因此,“LastActivityDate=LAST_MONTH”相当于说该日期大于或等于上个月第一天的开始,小于或等于最后一天的结束

由于是30天前,您可以使用此-

SELECT ID FROM Account WHERE LastActivityDate < LAST_N_DAYS:30
从LastActivityDate
您是在web服务调用中还是在Apex代码中执行此查询?如果这是在Apex中,superfell的答案是正确的。通过Web服务,但我只是在程序中声明了日期,并将其作为字符串作为特定日期传递给查询。我假设您正在使用Apex,因为您将问题标记为Apex。LAST_N_DAYS将是一种更好的方法,因为SOQL已经有了这样做的语法,或者他们以后再加上?我认为过去几天“我们正在使用它”
SELECT id FROM Account WHERE LastActivityDate > LAST_MONTH
SELECT ID FROM Account WHERE LastActivityDate < LAST_N_DAYS:30