1

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

1 回答 1

1

你需要提供更多细节,但似乎你想要这个:

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

db<>在这里摆弄

于 2021-06-04T18:49:37.803 回答