You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

查询OTO_HISTORICAL_TRACKING_DETAIL近3月数据返回0结果问题求助

问题原因分析
  • 第一个查询的时间范围是「4个月前的当天」到「1个月前的当天」,第二个查询是到「当前日期」能返回结果,说明你的数据集中的有效记录,全部落在「1个月前的当天到当前日期」这个区间里,第一个查询的范围完全没覆盖到这些数据。
  • 举个实际例子:假设当前日期是2024-10-20,第一个查询的区间是2024-06-20到2024-09-20,但你的数据只有2024-09-21到2024-10-20的记录,自然查不到结果。
解决方法

先明确「近3个月」的业务定义,对应不同的查询写法:

场景1:要过去3个完整自然月的数据(不含当前月)

比如当前是10月,要7、8、9月的全部数据,应该把结束时间设为上个月的最后一天,而不是上个月的当天:

SELECT *
FROM OTO_HISTORICAL_TRACKING_DETAIL
WHERE OTO_START_DATE BETWEEN ADD_MONTHS(CURRENT_DATE, -3) 
                         AND LAST_DAY(ADD_MONTHS(CURRENT_DATE, -1))

(比如当前2024-10-20,区间是2024-07-20到2024-09-30,覆盖7、8、9月的所有数据)

场景2:要包含当前月在内的近3个月数据(从3个月前的当天到现在)

这是最常见的「近3个月」需求,直接调整起始时间为ADD_MONTHS(CURRENT_DATE, -3):

SELECT *
FROM OTO_HISTORICAL_TRACKING_DETAIL
WHERE OTO_START_DATE BETWEEN ADD_MONTHS(CURRENT_DATE, -3) 
                         AND CURRENT_DATE

(当前2024-10-20的话,区间是2024-07-20到2024-10-20,包含近3个月的所有数据)

场景3:要过去90天的自然日数据

如果是按自然日计算的90天,用以下写法:

SELECT *
FROM OTO_HISTORICAL_TRACKING_DETAIL
WHERE OTO_START_DATE >= CURRENT_DATE - INTERVAL '90' DAY

内容的提问来源于stack exchange,提问作者Kartik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:52:37