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

Amazon Redshift提取上月数据遇问题:查询返回空值求协助排查

问题排查与修复方案

嘿,你的查询返回空值的原因很明确——两边的格式完全不匹配:

  • 左边用to_char(created_at,'yyyy-mm')得到的是类似'2024-05'的「年份-月份」字符串
  • 右边EXTRACT(month ...)得到的是纯数字的月份(比如5)

这俩值根本不可能相等,所以查询自然拿不到数据。下面给你两种修复方案:

方案1:统一格式做字符串匹配

把右边的日期也转换成yyyy-mm格式,和左边对齐:

select created_at, sale_id 
from billing 
where to_char(created_at,'yyyy-mm') = to_char(CURRENT_DATE - '1 month'::interval, 'yyyy-mm');

方案2:用日期范围查询(更推荐)

这种方式不需要转换字符串,直接用日期区间匹配,性能更好(如果created_at有索引的话,能直接利用索引提速):

select created_at, sale_id 
from billing 
where created_at >= date_trunc('month', CURRENT_DATE - '1 month'::interval)
  and created_at < date_trunc('month', CURRENT_DATE);

简单解释下:

  • date_trunc('month', CURRENT_DATE - '1 month'::interval)会返回上月的第一天(比如今天是2024-06-10,就返回2024-05-01 00:00:00)
  • date_trunc('month', CURRENT_DATE)返回当月第一天(2024-06-01 00:00:00)
  • 这样就能精准覆盖上月所有时间的记录,包括最后一天的23:59:59,不会漏掉也不会多拿

另外提个小注意点:如果你的created_at字段带时区,要确保和CURRENT_DATE的时区一致,避免跨时区导致的日期偏差哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:28:38