在写salesforce batch 等过滤条件的时候我们很多用到时间的逻辑判断,salesforce 官方提供了如下既有的方法来方便我们编写soql。下面我用一些例子来帮助大家理解。
日期字面量 | 范围 | 例子 |
YESTERDAY | 从前一天 00:00:00 开始,持续 24 小时。 | SELECT Id FROM Account WHERE CreatedDate = YESTERDAY |
TODAY | 从当天的 00:00:00 开始并持续 24 小时。 | SELECT Id FROM Account WHERE CreatedDate > TODAY |
TOMORROW | 从当天之后的 00:00:00 开始并持续 24 小时。 | SELECT Id FROM Opportunity WHERE CloseDate = TOMORROW |
LAST_WEEK | 从最近一周的第一天之前的一周的第一天 00:00:00 开始,并持续 7 天。您的语言环境决定了一周的第一天。 | SELECT Id FROM Account WHERE CreatedDate > LAST_WEEK |
THIS_WEEK | 从当天或之前一周的最近第一天的 00:00:00 开始,并持续 7 天。您的语言环境决定了一周的第一天。 | SELECT Id FROM Account WHERE CreatedDate < THIS_WEEK |
NEXT_WEEK | 从当天后一周的最近第一天 00:00:00 开始,持续 7 天。您的语言环境决定了一周的第一天。 | SELECT Id FROM Opportunity WHERE CloseDate = NEXT_WEEK |
LAST_MONTH | 从当前日期前一个月的第一天 00:00:00 开始,并持续到该月的所有日子。 | SELECT Id FROM Opportunity WHERE CloseDate > LAST_MONTH |
THIS_MONTH | 从当天所在月份的第一天 00:00:00 开始,并持续到该月的所有日子。 | SELECT Id FROM Account WHERE CreatedDate < THIS_MONTH |
NEXT_MONTH | 从当前日期所在月份的下一个月的第一天 00:00:00 开始,并持续到该月的所有日子。 | SELECT Id FROM Opportunity WHERE CloseDate = NEXT_MONTH |
LAST_90_DAYS | 从当天开始并持续到过去 90 天。此范围包括当天,而不仅仅是前几天。所以它总共包括91天。 | SELECT Id FROM Account WHERE CreatedDate = LAST_90_DAYS |
NEXT_90_DAYS | 从第二天的 00:00:00 开始,并持续到接下来的 90 天。 | SELECT Id FROM Opportunity WHERE CloseDate > NEXT_90_DAYS |
LAST_N_DAYS:n | 对于提供的数字n,从当天开始并持续到过去n 天。此范围包括当天,而不仅仅是前几天。例如,LAST_N_DAYS:1包括昨天和今天。 | SELECT Id FROM Account WHERE CreatedDate = LAST_N_DAYS:365 |
NEXT_N_DAYS:n | 对于提供的数字n,从第二天的 00:00:00 开始并持续接下来的n 天。此范围不包括当天。例如, NEXT_N_DAYS:1相当于明天. | SELECT Id FROM Opportunity WHERE CloseDate > NEXT_N_DAYS:15 |
NEXT_N_WEEKS:n | 对于提供的数字n,从下周第一天的 00:00:00 开始,并持续接下来的 n周。 | SELECT Id FROM Opportunity WHERE CloseDate > NEXT_N_WEEKS:4 |
LAST_N_WEEKS:n | 对于提供的数字n,从前一周最后一天的 00:00:00 开始,并持续过去 n周。 | SELECT Id FROM Account WHERE CreatedDate = LAST_N_WEEKS:52 |
NEXT_N_MONTHS:n | 对于提供的数字n,从下个月第一天的 00:00:00 开始,并持续到接下来的 n个月。 | SELECT Id FROM Opportunity WHERE CloseDate > NEXT_N_MONTHS:2 |
LAST_N_MONTHS:n | 对于提供的数字n,从上个月最后一天的 00:00:00 开始,并持续过去 n个月。 | SELECT Id FROM Account WHERE CreatedDate = LAST_N_MONTHS:12 |
THIS_QUARTER | 从当前季度的 00:00:00 开始并持续到当前季度末。 | SELECT Id FROM Account WHERE CreatedDate = THIS_QUARTER |
LAST_QUARTER | 从上一季度的 00:00:00 开始,一直持续到该季度末。 | SELECT Id FROM Account WHERE CreatedDate > LAST_QUARTER |
NEXT_QUARTER | 从下一季度的 00:00:00 开始,一直持续到该季度末。 | SELECT Id FROM Account WHERE CreatedDate < NEXT_QUARTER |
NEXT_N_QUARTERS:n | 从下个季度的 00:00:00 开始,一直持续到第n个季度末。 | SELECT Id FROM Account WHERE CreatedDate < NEXT_N_QUARTERS:2 |
LAST_N_QUARTERS:n | 从上一季度的00:00:00 开始,一直持续到上一季度末。 | SELECT Id FROM Account WHERE CreatedDate > LAST_N_QUARTERS:2 |
THIS_YEAR | 从当年 1 月 1 日 00:00:00 开始,一直持续到当年 12 月 31 日结束。 | SELECT Id FROM Opportunity WHERE CloseDate = THIS_YEAR |
LAST_YEAR | 从上一年的 1 月 1 日 00:00:00 开始,一直持续到当年的 12 月 31 日。 | SELECT Id FROM Opportunity WHERE CloseDate > LAST_YEAR |
NEXT_YEAR | 从次年 1 月 1 日 00:00:00 开始,一直持续到当年 12 月 31 日结束。 | SELECT Id FROM Opportunity WHERE CloseDate < NEXT_YEAR |
NEXT_N_YEARS:n | 从次年 1 月 1 日 00:00:00 开始,一直持续到第 n年的 12 月 31 日结束。 | SELECT Id FROM Opportunity WHERE CloseDate < NEXT_N_YEARS:5 |
LAST_N_YEARS:n | 从前一年的 1 月 1 日 00:00:00 开始,一直持续到前 n年的 12 月 31 日结束。 | SELECT Id FROM Opportunity WHERE CloseDate > LAST_N_YEARS:5 |