Расчет оставшихся дней в 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<> скрипка здесь

Другие вопросы по тегам