2014-07-20 117 views
1

我需要發送通知電子郵件給會員,當他們即將到期前一個月前後一天的會員。前一個月和後一天在Mysql

例如:如果會員在20/08/2014到期,我需要在 21/07/2014

發郵件我用下面的邏輯來享受一個月的情況下,

membership_expires<DATE_ADD(NOW(),INTERVAL 1 MONTH) 

但我不知道如何在同一個查詢中添加一天條件。

任何幫助將不勝感激。

回答

2
where membership_expires = CURDATE() + interval 1 MONTH 
    or membership_expires = CURDATE() - interval 1 DAY 
0

感謝@juergen和this answer我提出了以下條款

membership_expires>NOW() and membership_expires< DATE_SUB((DATE_ADD(NOW(),INTERVAL 1 MONTH)), INTERVAL 1 DAY) 
+0

你真的想用'='而不是'<',除非您希望將超過兩個日期的通知發送給即將到期的成員。 (而且,我還要補充一點,你的問題*明確指出郵件僅在兩天內發送。) –

+0

是的,你是如此正確,但是目前我正在使用一個標誌來維護髮送通知記錄。所以它不會發送兩次,但如果我錯過任何由於任何技術故障,在這種情況下,我認爲我需要使用'<'而不是'=' –

+0

@JanithChinthana我發現avisheks表示法比你更容易理解 - 它是得到了同樣的結果,請參見[this fiddle](http://sqlfiddle.com/#!2/81031/2)。 – VMai

1

如何:

SELECT * FROM subscription 
WHERE 
membership_expires = CURDATE() + interval 1 MONTH - interval 1 DAY; 
相關問題