как создать ежемесячный цикл повторяющихся платежей с помощью планировщика событий php и mysql?

#php #mysql

#php #mysql

Вопрос:

Я создаю систему партнерства, которая будет присуждать x amount партнеру на основе пакета, на который они подписываются every 30 days со дня регистрации

Это структура моей таблицы

введите описание изображения здесь

Итак, в основном, что я хочу сделать, это проверить для каждого партнера, если интервал между date_time и last_paid = 30days , а package = a затем добавить x amount к балансу.

ПРИМЕЧАНИЕ: для last_paid установлено значение ПРИ ОБНОВЛЕНИИ CURRENT_TIMESTAMP();

Я читал о MySQL планировщиках событий, но, похоже, не понимаю этого, пожалуйста, укажите мне правильное направление относительно того, как этого достичь. Спасибо.

Комментарии:

1. Вы уверены, что хотите хранить (что, по-видимому) легко выводимые данные?

2. Как вы предложите мне это сделать?

3. Сохраните дату, к которой присоединился пользователь. И вычисляйте разницу по мере необходимости.

4. Пожалуйста, можете ли вы привести пример кода для демонстрации?

5. Если вы исследуете, как найти разницу между 2 датами с помощью MySQL (что уже легко найти в Google), то вы должны найти решение, которое станет намного понятнее. Попробуйте. Если вы снова застряли, вернитесь и спросите снова.

Ответ №1:

Рассмотрим следующее:

 DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(partner_id SERIAL PRIMARY KEY
,signup_date DATE
);

INSERT INTO my_table VALUES
(1,'2020-01-01'),
(2,'2020-03-15'),
(3,'2020-05-14'),
(4,'2020-07-13'),
(5,'2020-09-21');

SELECT partner_id
     , FLOOR(DATEDIFF(CURDATE(),signup_date)/30) awards 
  FROM my_table;
 ------------ -------- 
| partner_id | awards |
 ------------ -------- 
|          1 |      9 |
|          2 |      7 |
|          3 |      5 |
|          4 |      3 |
|          5 |      0 |
 ------------ --------