我正在尝试编写一个 case 表达式,它查看截止日期,如果它已经过去,则选择即将到来的或最接近的截止日期。现在由于某些数据库限制,我必须手动执行此操作。问题是我的代码正在比较从due_date提取的日期(a)和从当前time_stamp提取的日期(b) ,如果a < b表示当前月份的到期日已经过去,下一个将是(a /当前月份+ 1) <- 日期格式示例 a / Oct.
现在的问题是,如果当前月份是 12(12 月),这将使下一个到期日成为我不想要的 / 13 。有什么方法可以将其限制为 12 并重置为 1?
另外,如果你能帮助我一年的部分,加分?
due_date |current_timestamp | Result
----------- ----------------- -----------
2021-12-05 |2022-10-18 | 2022-11-05
2022-06-02 |2022-10-18 | 2022-11-02
2022-10-19 |2022-10-18 | 2022-10-19
2022-10-15 |2022-10-18 | 2022-11-15
2021-10-20 |2022-10-18 | 2022-10-20
CASE
WHEN EXTRACT(DAY FROM due_date ) < EXTRACT(DAY FROM CURRENT_TIMESTAMP) THEN CONCAT(EXTRACT(DAY FROM due_date ),'/',(EXTRACT(Month FROM CURRENT_TIMESTAMP))+1)
ELSE CONCAT(EXTRACT(DAY FROM due_date ),'/',(EXTRACT(Month FROM CURRENT_TIMESTAMP)))
END AS "Next Payment Date"