Я имею дело с сайтом, где люди могут подписаться на определенные вещи за виртуальные деньги. Мне нужно указать даты окончания подписки в базе данных. В моей таблице есть поле «срок действия» для этого, который является ДАТА.
Когда пользователь продлевает свою подписку, мне нужно добавить 1 месяц к этой дате. Однако, если срок действия подписки уже истек, я хочу установить срок действия на 1 месяц, а не на 1 месяц после истечения срока подписки.
Я пробовал:
UPDATE shop_user_rights SET expiration = ADDDATE(MAX(expiration, CURDATE()), INTERVAL 1 MONTH);
и
UPDATE shop_user_rights SET expiration = FROM_UNIXTIME(
MIN(
UNIX_TIMESTAMP(expiration),
UNIX_TIMESTAMP(CURDATE())
)
),
expiration = ADDDATE(expiration, INTERVAL 1 MONTH);
Но оба дают синтаксические ошибки. Есть ли способ сделать это в 1 запросе, или мне нужно заранее использовать несколько запросов SELECT?