#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 |
------------ --------