求助:在Impala中用SQL获取上月数据,ADD_MONTHS无返回记录
Impala中正确获取上月全量数据的SQL写法
常见问题排查
你用ADD_MONTHS没返回数据,大概率是没正确构造出上月的起始和结束边界。比如直接用ADD_MONTHS(CURRENT_DATE(), -1)得到的是当前日期往前推一个月的某天(比如2026-05-15变成2026-04-15),而非上月第一天,导致筛选范围错误。
正确SQL语句
要精准获取**上月1日00:00:00到当月1日00:00:00(不含)**的数据,需构造准确的时间边界:
SELECT * FROM your_table_name WHERE your_time_column >= TRUNC(ADD_MONTHS(CURRENT_DATE(), -1), 'MM') AND your_time_column < TRUNC(CURRENT_DATE(), 'MM');
语句解释
TRUNC(CURRENT_DATE(), 'MM'):将当前日期截断到当月第一天,比如2026-05任意日期会转为2026-05-01TRUNC(ADD_MONTHS(CURRENT_DATE(), -1), 'MM'):先获取当前日期前一个月的日期,再截断到当月第一天,得到上月起始日(2026-04-01)- 用
>=和<的组合条件,确保包含上月第一天零点,同时排除当月第一天零点,完全匹配你的需求
如果你的时间字段是带时分秒的TIMESTAMP类型,该语句同样适用,Impala会自动处理日期与时间戳的比较逻辑。
内容的提问来源于stack exchange,提问作者sam243475
相关产品推荐
相关产品推荐

