MySQL и 30 дней - PullRequest
       37

MySQL и 30 дней

3 голосов
/ 01 сентября 2010

Я работаю на сайте, который обрабатывает бесплатные подписки, и я хотел бы сейчас, как отменить их подписки после 30 дней бездействия, я знаю, что это должно быть сделано с помощью cron-jobs, но я понятия не имею, каксчитать 30 после последнего раза, когда пользователь вошел в систему?

Ответы [ 4 ]

4 голосов
/ 01 сентября 2010
SELECT user_id FROM users WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) > last_logged_in_date
2 голосов
/ 01 сентября 2010

Вам необходимо использовать функцию mysql DATE_ADD

SELECT DATE_ADD('YOUR DATE', INTERVAL 30 day)

Для получения дополнительной информации см. Руководство по mysql http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add.

Вы можете сделать это за 1 оператор UPDATE

UPDATE yourTable SET active = 0 WHERE validity_date < CURRENT_DATE

А когда они подписываются, вы получаете оплату

UPDATE yourTable SET active = 1, validity_date = DATE_ADD(CURRENT_DATE, INTERVAL 1 MONTH) WHERE id = 'somekind of id'
1 голос
/ 02 сентября 2010

И если вы не хотите использовать cron и использовать MySQL 5.1 или выше, вы можете использовать событие. http://dev.mysql.com/doc/refman/5.1/en/create-event.html

0 голосов
/ 01 сентября 2010

Вы можете сделать запрос, который вам это даст.На самом деле, документация по MySQL содержит именно ваш пример.Сделайте быстрый поиск "30 дней" на этой странице: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html.

...