我需要發送通知電子郵件給會員,當他們即將到期前一個月前後一天的會員。前一個月和後一天在Mysql
例如:如果會員在20/08/2014到期,我需要在 21/07/2014
發郵件我用下面的邏輯來享受一個月的情況下,
membership_expires<DATE_ADD(NOW(),INTERVAL 1 MONTH)
但我不知道如何在同一個查詢中添加一天條件。
任何幫助將不勝感激。
我需要發送通知電子郵件給會員,當他們即將到期前一個月前後一天的會員。前一個月和後一天在Mysql
例如:如果會員在20/08/2014到期,我需要在 21/07/2014
發郵件我用下面的邏輯來享受一個月的情況下,
membership_expires<DATE_ADD(NOW(),INTERVAL 1 MONTH)
但我不知道如何在同一個查詢中添加一天條件。
任何幫助將不勝感激。
where membership_expires = CURDATE() + interval 1 MONTH
or membership_expires = CURDATE() - interval 1 DAY
感謝@juergen和this answer我提出了以下條款
membership_expires>NOW() and membership_expires< DATE_SUB((DATE_ADD(NOW(),INTERVAL 1 MONTH)), INTERVAL 1 DAY)
如何:
SELECT * FROM subscription
WHERE
membership_expires = CURDATE() + interval 1 MONTH - interval 1 DAY;
你真的想用'='而不是'<',除非您希望將超過兩個日期的通知發送給即將到期的成員。 (而且,我還要補充一點,你的問題*明確指出郵件僅在兩天內發送。) –
是的,你是如此正確,但是目前我正在使用一個標誌來維護髮送通知記錄。所以它不會發送兩次,但如果我錯過任何由於任何技術故障,在這種情況下,我認爲我需要使用'<'而不是'=' –
@JanithChinthana我發現avisheks表示法比你更容易理解 - 它是得到了同樣的結果,請參見[this fiddle](http://sqlfiddle.com/#!2/81031/2)。 – VMai