MySql 中的剩余天数计算 - 多个到期日

Remaining days calculation in MySql - Multiple maturities

我在计算剩余天数时遇到以下问题。在计算下一个时期的天数之前,我需要第一个时期到期。在此示例中,即使在同一天开始了 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

您需要提供更多详细信息,但您似乎想要这样:

SELECT sum(days_valid) + datediff(date, CURRENT_DATE) remaining_days
FROM  tmp_dates p
group by date 
| remaining_days |
| -------------: |
|             35 |

db<>fiddle here