我在计算剩余天数时遇到以下问题。在计算下一个周期的天数之前,我需要第一个周期到期。在这个例子中,尽管在同一天开始了两个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<gt;小提琴这里