Select rows from MySQL table where PHP timestamp is older than X

前端 未结 4 545
逝去的感伤
逝去的感伤 2020-12-17 02:12

I have a user table, where users need to be approved, i want to show users who are not approved and is registered more than 7 days ago.

My user_regdate is a timestam

相关标签:
4条回答
  • 2020-12-17 02:27

    php's time() function outputs a unix timestamp (the number of seconds since January 1 1970). MySQL's now() function outputs a formatted date (like 2011-6-9 12:45:34)... so I don't think you can compare them like that.

    Try using the unix timestamp, minus 7 days, instead of now() in your query:

     $7_days_ago = time() - (7 * 24 * 60 * 60);
     mysql_query("select * from users WHERE user_regdate <" . $7_days_ago . " AND approved='0' order by id;");
    
    0 讨论(0)
  • 2020-12-17 02:27

    Try this;

    select * 
    from users 
    WHERE DATE_SUB(user_regdate,INTERVAL 7 DAY) 
    AND approved='0' 
    order by id;
    
    0 讨论(0)
  • 2020-12-17 02:43

    Primitive solution at best, but im not the best at MySQL time calculation

    $timestamp = strtotime("-7 days");
    mysql_query("SELECT * FROM users WHERE user_regdate < $timestamp AND approved = 0 ORDER BY id");
    
    0 讨论(0)
  • 2020-12-17 02:46

    PHP's timstamps are a simple integer, whereas MySQL's now() returns a datetime value. Most likely this will fix up the query:

    SELECT ... WHERE user_regdate < unix_timestamp(now() - interval 7 day)) ...
    

    Basically, without the unix_timstamp() call, you're comparing apples and oranges.

    0 讨论(0)
提交回复
热议问题