代码之家  ›  专栏  ›  技术社区  ›  Iren Ramadhan

检查两个日期字段是否正好有一个月的间隔(相同日期)的逻辑,即2月28日和3月28日

  •  0
  • Iren Ramadhan  · 技术社区  · 1 年前

    上下文

    我想检查字段B中的日期是否比字段A中的日期提前一个月。然而,“一个月”的定义是:字段B的日期与字段A的日期完全相同。

    表示例:

    日期a 日期_b 旗帜
    2024-01-05 2024-02-04 错误的
    2024-01-05 2024-02-05 符合事实的

    我的失败试用:

    ...
    
    CASE WHEN DATE_DIFF(date_b, date_a, MONTH) = 1 THEN TRUE ELSE FALSE END AS flag
    
    ...
    

    然而,这种逻辑只考虑了月份,而没有考虑日期本身。

    对此有什么建议吗?谢谢

    1 回复  |  直到 1 年前
        1
  •  1
  •   Damião Martins    1 年前

    可以使用一个选项 EXTRACT 函数来获取日期并进行比较:

    CASE 
      WHEN 
        DATE_DIFF(date_b, date_a, MONTH) = 1 
        AND EXTRACT(DAY FROM date_a) = EXTRACT(DAY FROM date_b)
      THEN TRUE 
      ELSE FALSE
    END AS flag