检查并检索数据库列日期是否在接下来的X天内

时间:2016-12-25 13:20:18

标签: php mysql wordpress

我有一个会员网站,其中有一个特定的用户到期日期。我想要做的只是让他们的会员资格将在X天内过期并向他们发送电子邮件。

db中有一个名为“mm_user_data”的表,这是到期日存储在名为“expiration_date”的列中

我可以使用此代码检索所有用户的到期日期

$sql = "SELECT expiration_date FROM mm_user_data";
$expire= $wpdb->get_results($sql);
echo var_dump($expire);

输出是这个

[0]=> object(stdClass)#2455 (1) { ["expiration_date"]=> string(19) "2017-06-30 16:00:00" }

我需要做的是仅在“2017-06-30 16:00:00”在未来10天内检查和检索列wp_user_id,例如

我尝试了这个,但它似乎没有起作用

$daysPriorToRebill = 10;
$priorToRebillDate = date('Y-m-d', strtotime("-{$daysPriorToRebill} days"));

$sql3 = "SELECT wp_user_id
FROM mm_user_data
WHERE expiration_date = '".$daysPriorToRebill."'";
$userid = $wpdb->get_results($sql3);
echo var_dump($userid);

输出array(0) { }

从此我希望能够使用$userid获取user_email,然后向他发送一封电子邮件作为续订提醒。所以我目前的具体问题是让上面的代码工作并检索用户的用户ID,这些用户ID将在10天后到期。

2 个答案:

答案 0 :(得分:0)

我能够使用此代码

获取将在未来10天内过期的所有用户的ID
AND expiration_date > '".$todaydate."'"

您注意到我添加了$priorToRebillDate,因为它检索的所有会员资格的有效期限低于.section .text .global _start _start: mov $0xDEADBEEF, %eax ,比当前日期提前10天,因此我需要将其停止带来任何已经过期的东西。

答案 1 :(得分:0)

使用DATE()CURDATE()DATEDIFF(),您可以使用mysql查询检索所有用户,例如只剩下10天,直到订阅结束。

SELECT wp_user_id FROM mm_user_data WHERE DATEDIFF(CURDATE(),DATE(expiration_date)) = 10

此查询将返回订阅在10天内结束的所有用户ID。不需要用php进行痛苦的日期计算。