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

Redshift中日期字段时间范围判断的Case语句问题求助

Redshift Case语句逻辑修正方案

问题根源

你的Case语句逻辑完全错误:你用Last_Activity_End_Date和自身加3年后的日期做比较,比如2018-12-01加3年是2021-12-01,任何日期都必然小于自身加3年的结果,所以第一个条件永远成立,不管记录日期有多早,都会返回3 Years,这和你的需求完全相悖。

正确代码实现

你需要将活动日期和当前日期往前推3年的日期做比较,同时优先处理NULL情况(Case语句按顺序判断,NULL值不会触发后续条件):

CASE
    WHEN activity_end_date_time IS NULL THEN 'Null'
    WHEN activity_end_date_time >= DATEADD(year, -3, CURRENT_DATE) THEN '3 years'
    ELSE 'More than 3 years'
END AS "Last_Activity_Identifier"

逻辑说明

  • 首先判断字段是否为NULL,是则返回Null
  • 若活动日期晚于等于当前日期往前推3年,说明在近3年内,返回3 years
  • 其余情况(活动日期早于当前日期往前推3年),返回More than 3 years

针对你的示例验证

以当前日期2023-01-26为例:

  • DATEADD(year, -3, CURRENT_DATE)得到2020-01-26
  • 当activity_end_date_time为2018-12-01时,该日期早于2020-01-26,会返回More than 3 years,符合你的预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 14:01:16