请提醒我开始发送7天或更短时间内的活动邮件。 这是向与会者发送邮件,仅发送到0-7天的活动。
我需要帮助的地方就在这条线上:
...WHERE event_start_date > '$current_time' //currently sends to all attendees for all events starting in future
$current_time = time();
如何更改以反映我的需求? 请注意日期存储在unix_timestamp中。
谢谢
答案 0 :(得分:1)
获取当前的unix时间戳。
$current_time = time();
因为它存储在几秒钟内,您可以通过添加60秒* 60分钟* 24小时* 7天来添加它,以获得一周内的unix时间戳。
$weekFromNow=$current_time+(60*60*24*7);
现在只需找到event_start_date
小于或等于它的事件。
...WHERE event_start_date <= '$weekFromNow'
and event_start_date > '$current_time'
//sends to all attendees for all events starting in future
编辑:由于$weekFromNow
是未来一周,查询需要查找小于或等于该值的所有时间,这是查询的作用。如果您的event_start_date
保留了某个值,而不是事件开始时间的unix时间戳,请告诉我。
答案 1 :(得分:1)
您也可以只在MySQL中执行此操作,而无需先在PHP中确定时间。我不认为它更快,但它更具可读性:
...WHERE FROM_UNIXTIME(event_start_date) <= DATE_ADD(CURDATE(), INTERVAL 1 WEEK)
但是,这也会返回今天之前开始的事件。如果您不想这样,可以使用:
...WHERE FROM_UNIXTIME(event_start_date) BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 WEEK)
(改编自the MySQL docs)