计算剩余天数时出现以下问题。在计算下一个时期的天数之前,我需要第一个时期到期。在此示例中,即使在同一天开始了 2 个 30 天的周期,但持续时间为 60 天,因此,截至今天还剩 38 天,而不是我的公式给出的 16 天。让我们把它想象成一个订阅模型,其中向用户收取 30 天的两次付款。到目前为止,这是我的解决方案。
CREATE TEMPORARY TABLE `tmp_dates`(
`date` datetime NOT NULL,
`days_valid` integer NOT NULL
);
insert into tmp_dates (date, days_valid) values ('2021-05-10', 30);
insert into tmp_dates (date, days_valid) values ('2021-05-10', 30);
SELECT sum(CASE
WHEN Datediff(Date_add(date, INTERVAL days_valid day),
CURRENT_DATE) <
0
THEN 0
ELSE Datediff(Date_add(date, INTERVAL days_valid day),
CURRENT_DATE)
end) AS remaining_days
FROM tmp_dates p;
--from 2021-05-10 to 2021-06-10 (8 days remaining) + 30 (additional days remaining) = 38 days remaining