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

如何编写Hive单一查询实现基于当前日期的动态日期范围数据提取

整合Hive动态日期范围查询的解决方案

没问题,我来帮你把两种日期场景整合到一条Hive查询语句里,核心就是用CASE WHEN动态计算起始日期,让查询自动适配当前日期的情况。

完整的查询语句

SELECT * 
FROM my_table 
WHERE partition_col >= 
    CASE 
        -- 当前日期是当月10号及以后,取当月10号作为起始
        WHEN day(current_date) >= 10 THEN 
            date_add(current_date, 1 - day(current_date) + 9)
        -- 当前日期早于当月10号,取上月10号作为起始
        ELSE 
            date_add(trunc(add_months(current_date, -1), 'MM'), 9)
    END 
AND partition_col <= current_date;

逐段解释逻辑

  • 场景判断:通过day(current_date) >= 10区分两种情况:
    • 当当前日期≥当月10号时,沿用你原来的计算方式:date_add(current_date, 1 - day(current_date)+9),这个公式能从当前日期回推到当月10号(比如1月27日,1-27+9=-17,date_add后就是1月10日)。
    • 当当前日期<当月10号时,先通过add_months(current_date, -1)获取上月日期,再用trunc(..., 'MM')定位到上月第一天,最后加9天得到上月10号(比如1月3日,上月是12月,trunc后是12月1日,加9天就是12月10日)。
  • 截止日期:不管哪种场景,都用current_date作为数据的截止日期,保持逻辑统一。

示例场景验证

  • 如果当前日期是2025-01-27,起始日期会计算为2025-01-10,查询范围就是2025-01-10至2025-01-27,完全符合你的第一个示例。
  • 如果当前日期是2025-01-03,起始日期会计算为2024-12-10,查询范围就是2024-12-10至2025-01-03,和第二个示例一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 10:49:06