如何在mysql中使用存储在unix_timestamp中的日期进行提醒

时间:2012-07-25 08:34:00

标签: php mysql

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

谢谢

2 个答案:

答案 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