Установка даты подписки в MySQL - PullRequest
3 голосов
/ 17 июля 2009

Я имею дело с сайтом, где люди могут подписаться на определенные вещи за виртуальные деньги. Мне нужно указать даты окончания подписки в базе данных. В моей таблице есть поле «срок действия» для этого, который является ДАТА.

Когда пользователь продлевает свою подписку, мне нужно добавить 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?

1 Ответ

3 голосов
/ 17 июля 2009

Функции MIN() и MAX() предназначены для группировки: вместо них вы хотите LEAST() и GREATEST() .

...