【问题标题】:mysql and 30 daysmysql和30天
【发布时间】:2010-09-02 07:08:28
【问题描述】:

我正在一个处理免费订阅的网站上工作,我现在想知道如何在 30 天不活动后取消他们的订阅,我知道这必须通过 cron-jobs 完成,但我不知道如何在用户最后一次登录之后计数 30?

【问题讨论】:

  • 您如何知道用户上次登录的时间?我的意思是,假设你必须手动完成,你会怎么做?
  • @Raj 我花了一两秒钟才意识到你的问题背后的意图。我几乎回答了。 :P

标签: php mysql datetime cron


【解决方案1】:
SELECT user_id FROM users WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) > last_logged_in_date

【讨论】:

    【解决方案2】:

    你需要使用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'
    

    【讨论】:

      【解决方案3】:

      如果不想使用 cron 并使用 MySQL 5.1 或更高版本,则可以使用 event. http://dev.mysql.com/doc/refman/5.1/en/create-event.html

      【讨论】:

        【解决方案4】:

        你可以做一个查询来得到你。事实上,MySQL 文档中有你的例子。在此页面上快速搜索“30 天”:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-03
          • 1970-01-01
          • 2013-02-05
          • 2018-02-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多