2010-08-07 9 views
1

我需要修改我的有效通知腳本(通知成員,在成員失效之前,在到期日等),以特定的方式工作。問題與日期,成員已過期,但它不是

所以我的到期數據庫列(MySQL的)爲datetime類型,因此它例如值如下所示:2010-08-08 13點46分38秒

這裏是一件事:

腳本可以在任何時候從後端調用,並且期望用戶輸入例如1的數字,這意味着應該通知明天(在任何時間)到期的所有成員。所以如果腳本被調用:2010-07-08 00:00:05所有到期日期爲2010-08-08 00:00:00至2010-08-08 23:59:59的成員都應該被通知。或者換句話說,所有到期日成員都包含2010-08-08。

我正在使用ZendFramework,但我認爲我也會處理MySQL代碼。 我也相信,美明白我的意思的這個帖子,我想要完成的任務......

我的代碼無法正常工作正常(這種做法)是這樣的:

$d = new Zend_Db_Expr("DATE_ADD(NOW(), INTERVAL $days DAY)"); 

$days2 = $days-1; 
$d2 = new Zend_Db_Expr("DATE_ADD(NOW(), INTERVAL $days2 DAY)"); 
return $this->fetchAll("status='1' AND expires <= $d AND expires >=$d2"); 

回答

0

爲了讓明天的時間窗口的開始和結束有關使用CURRENT_DATE() or CURDATE(),例如如何,

DATE_ADD(CURRENT_DATE(), INTERVAL $days DAY) 
DATE_ADD(CURRENT_DATE(), INTERVAL $days2 DAY) 

這會給你

+-------------------------------------------+-------------------------------------------+ 
| DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY) | DATE_ADD(CURRENT_DATE(), INTERVAL 2 DAY) | 
+-------------------------------------------+-------------------------------------------+ 
| 2010-08-08        | 2010-08-09        | 
+-------------------------------------------+-------------------------------------------+ 

你需要稍微調整你的不平等:

------- use less-than instead of less-than-or-equal. 
expires < $d AND expires >=$d2