ADD_DATE, если Дата истекла (автоматическая c подписка) - PullRequest
0 голосов
/ 09 января 2020

Я хочу вычислить с помощью запроса MariaDB дату повторяющейся подписки на основе этой информации: Например: start_date: 01.01.2019 period_of_validity: 4 (Месяцы) регулярная_фиша_дата: 01.05.2019, 01.09.2019, 01.01.2020, "01.05 .2020 "finish_by_user_at: members_will_finished_at: Case1: Когда Finish_by_user_at имеет значение NULL (это означает, что пользователь не отменяет свою подписку), регулярная_данная_даты должна обновляться автоматически после того, как интервал был достигнут. Как видно из приведенного выше примера, дата, которую он должен показать сейчас, - 01.05.2020. Ву может помочь мне с этой задачей? Нет php, java или что-то еще возможно. Только MYSQL запрос. Спасибо

SELECT
subscription.SubscriptionID,
subscription.tb_usersID,
subscription.subscription_planID,
subscription.payment_typeID,
subscription.start_date,
DATE_ADD(subscription.start_date, INTERVAL subscription_plan.period_of_validity MONTH) AS date_joker,
DATE_ADD(CURDATE(), INTERVAL subscription_plan.period_of_validity MONTH) AS regular_finish_date,
subscription.finished_by_user_at,
(CASE
WHEN subscription.finished_by_user_at IS NOT NULL THEN
(CASE
WHEN subscription.regular_finish_date >= NOW() - INTERVAL subscription_plan.period_of_validity MONTH THEN
DATE_ADD(subscription.regular_finish_date, INTERVAL subscription_plan.period_of_validity MONTH)
END)
END) AS membership_will_finished_at,
subscription.is_active,
subscription.status,
subscription.notizen,
subscription.file1,
subscription.file2,
subscription.file3
FROM subscription
JOIN subscription_plan ON subscription.subscription_planID = subscription_plan.subscription_planID

1 Ответ

0 голосов
/ 17 января 2020

Не хранить даты в этом формате: 01.01.2019. Вместо этого используйте 2019-01-01. И храните их с типом данных DATE, а не VARCHAR. Тогда вы можете использовать выражения даты.

Предлагаемые индексы:

subscription_plan:  (subscription_planID, period_of_validity)
subscription:  (subscription_planID)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...