如何编写SOQL查询获取今日起365天/过去365天的数据?
解决SOQL日期范围查询错误的方案
错误原因分析
你遇到的两个错误根源在于:
- SOQL不允许直接对
Date类型值和数字执行加法运算(Current_Date() + 365属于非法操作),必须使用专用日期函数处理日期偏移。 - 查询中
Datetime类型字段与Current_Date()(Date类型)的类型不匹配,导致比较运算符触发类型校验错误。
正确查询示例
获取今日至未来365天的数据
SELECT Id__c FROM table WHERE Datetime__c BETWEEN TODAY AND DATEADD(TODAY, 365, 'day')
或者用更直观的范围写法:
SELECT Id__c FROM table WHERE Datetime__c >= TODAY AND Datetime__c <= DATEADD(TODAY, 365, 'day')
获取过去365天至今日的数据
SELECT Id__c FROM table WHERE Datetime__c >= DATEADD(TODAY, -365, 'day') AND Datetime__c <= TODAY
补充说明
TODAY是SOQL内置的日期字面量,代表当前系统日期,比Current_Date()更简洁易用。DATEADD(date, interval, unit)函数用于实现日期偏移,支持的单位包括day、month、year等,能确保日期运算的合法性和类型一致性。- 如果需要精确匹配时间范围(比如今日0点至未来365天的23:59:59),可以用
DATETIMEVALUE()转换日期并补充时间偏移:
SELECT Id__c FROM table WHERE Datetime__c >= DATETIMEVALUE(TODAY) AND Datetime__c <= DATETIMEVALUE(DATEADD(TODAY, 365, 'day')) + 0.99999
(+0.99999等价于给日期加上23小时59分59秒)
内容的提问来源于stack exchange,提问作者Gousiya K
相关产品推荐
相关产品推荐

