2012-07-25 57 views
0

請提醒我開始發送7天或更短時間內的郵件。 這就是發送郵件給與會者參加僅在0 - 7天開始的活動。如何在MySQL中使用unix_timestamp中存儲的日期進行提醒

在我需要幫助是在這條線:

...WHERE event_start_date > '$current_time' //currently sends to all attendees for all events starting in future 

$current_time = time(); 

我怎樣才能改變這種狀況,以反映我需要什麼? 請注意日期存儲在unix_timestamp中。

謝謝

回答

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時間戳更高的值,請告訴我。

+0

這是錯誤的,因爲它會顯示事件開始在7天以上。 – 2012-07-25 09:30:11

+0

好吧,我認爲event_start_date是事件開始時間的unix時間戳?另外,我在發佈後約一分鐘編輯了我的答案。你從蝙蝠身上抓住了它嗎? – Fluffeh 2012-07-25 09:34:26

+0

您的查詢會顯示昨天開始的活動等等,這不是預期的結果。而不是顯示在7天或更短時間內開始的事件,而不是昨天。根據你的查詢,記得昨天還不到7天。說昨天是unix時間戳123445558,從現在開始的一週將總是比昨天更多。 – 2012-07-25 09:57:39

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

+0

將嘗試第二個查詢並更新線程。非常感謝您的支持。 – 2012-07-25 10:04:39

相關問題