[英]Mysql: Check if user have not been logged in last 14, 60 or 120 days
嘗試構建系統來檢查用戶最近14天,60天或120天尚未登錄。 如果用戶未登錄14天,但我不想發送電子郵件,但我希望60到120天不能同時向該用戶發送電子郵件。
表 :user_counts今天的user_count中有超過80 000行。
列 :時間是Mysql中的DateTime
// 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。
// 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
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.