0

请我提醒您开始为 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 中。

谢谢

4

2 回答 2

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)

(改编自MySQL 文档

于 2012-07-25T09:01:20.660 回答
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 时间戳之外的其他值,请告诉我。

于 2012-07-25T08:36:44.290 回答