MySql中的剩余天数计算-多个到期日
在计算剩余天数时,我遇到以下问题。我需要第一个周期在计算下一个周期的天数之前过期。在本例中,即使在同一天开始了两个为期30天的时段,但持续时间为60天,因此,截至今天,还有38天,而不是我公式中给出的16天。 让我们把它想象成一种订阅模式,在这种模式中,用户需要在30天内支付两次费用。 到目前为止,这是我的解决方案MySql中的剩余天数计算-多个到期日,mysql,subscription,maturity,Mysql,Subscription,Maturity,在计算剩余天数时,我遇到以下问题。我需要第一个周期在计算下一个周期的天数之前过期。在本例中,即使在同一天开始了两个为期30天的时段,但持续时间为60天,因此,截至今天,还有38天,而不是我公式中给出的16天。 让我们把它想象成一种订阅模式,在这种模式中,用户需要在30天内支付两次费用。 到目前为止,这是我的解决方案 CREATE TEMPORARY TABLE `tmp_dates`( `date` datetime NOT NULL, `days_valid` integer NOT
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
创建临时表`tmp\u日期`(
`date`datetime不为空,
`天\u有效`整数不为空
);
在tmp_日期(日期,有效天数)值中插入('2021-05-10',30');
在tmp_日期(日期,有效天数)值中插入('2021-05-10',30');
选择总和(大小写)
当Datediff(日期)添加(日期、间隔天数、有效日期)时,
当前日期)<
0
然后0
ELSE Datediff(日期\添加(日期、间隔天数\有效日期),
当前日期)
结束)作为剩余天数
从tmp_日期开始;
--从2021-05-10到2021-06-10(剩余8天)+30(剩余额外天数)=剩余38天
您需要提供更多详细信息,但似乎您需要:
|剩余天数|
| -------------: |
| 35 |
dbfiddle您的主键是什么?今天是什么日子?2021-06-01?@草莓:不,今天是
当前日期()@像这样的鲁克不会让人困惑!!啊,刚才我确实读了代码中的最后一条评论。。。。。。这个问题需要更多信息!,因为一个名为days\u valid
的专栏表明某些东西在这段时间内有效,而不是在30天内有效……我刚刚做了一些澄清,以更好地理解这一需要。@Raymont你能把这个问题的回答状态改为已接受,赏金归eshirvana所有,并让它离开悬赏名单吗?
SELECT sum(days_valid) + datediff(date, CURRENT_DATE) remaining_days
FROM tmp_dates p
group by date
| remaining_days |
| -------------: |
| 35 |