2017-02-28 124 views
0

试图建立一个系统,检查巫婆用户在过去的14,60或120天内没有登录过。如果用户未在14天内登录但是同时向该用户发送电子邮件60天和120天,我想发送电子邮件。Mysql:检查用户是否在过去的14,60或120天内没有登录

:user_counts user_count当天有超过80 000行。

:时间日期时间在MySQL

// Number of days a user have not been login 
$dateCheck = array('14', '60', '120'); 

foreach ($dateCheck as $day) {   

    $userList = $wpdb->get_results(' 
    SELECT id, user_id 
    FROM user_counts 

    WHERE DATE(time) = "'.date("Y-m-d", strtotime("-".$day." day")).'" 
     AND time != (
      SELECT MAX(time) FROM user_counts 
      WHERE time < DATE_SUB(NOW(), INTERVAL '.$day.' DAY) 
    ) 
    GROUP BY user_id 
    '); 

} 

结果 我得到了所有的14,60及120天同一USER_ID。

+0

是时间字段时间戳吗? – Naincy

+0

这个查询现在返回什么? – Akintunde007

+0

在反馈之后更新 – user2673664

回答

0
// Number of days a user have not been login 
$dateCheck = array('14', '60', '160'); 

$res = $wpdb->get_results(' 
    SELECT id, user_id, MAX(DATE(time)) as t 
    FROM user_counts  
    GROUP BY user_id 
    HAVING t <= "'.date("Y-m-d", strtotime("-".min($dateCheck)." day")).'" 
    ORDER BY t 
'); 

rsort($dateCheck); 
foreach ($res as $result) { 
    $date = date_create($res); 

    foreach ($dateCheck as $day) { 

     if ($result->t == date("Y-m-d", strtotime("-".$day." day"))) { 

      // Send for exempel a mail 
      // check witch email temple to use by using: $day 

     } 
    } 
} 
+0

是不是更快在Mysql中直接提出这个请求呢? – user2673664

+0

@ user2673664您是否需要将这些结果传递给PHP?如果你在谈论日期,那么是的,这可能会更好。 – apokryfos

+0

是的,我会发邮件给这个用户说“很久..” – user2673664