Расчет оставшихся дней в MySql - множественные сроки погашения
При подсчете оставшихся дней у меня возникает следующая проблема. Мне нужно, чтобы истек срок первой менструации, прежде чем подсчитывать дни следующей менструации. В этом примере, хотя 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
1 ответ
Решение
вам нужно предоставить более подробную информацию, но похоже, что вы этого хотите:
SELECT sum(days_valid) + datediff(date, CURRENT_DATE) remaining_days FROM tmp_dates p group by date
| оставшиеся_дни | | -------------: | | 35 |
db<> скрипка здесь