2011-10-03 218 views
0

我有一個叫做保留的表,它有列start_date和end_date。如何在不同條件下發送電子郵件提醒?

如果date_diff(start_date和end_date)是30,那麼我需要在end_date之前8,2和1天發送一封電子郵件。同樣與下面的..

60 - 15,4 120及以上 - 30,8,2 & 1 ... 任何想法如何做到這一點?

+0

如果1,2或8 – 2011-10-03 07:57:38

+0

使用DATEDIFF做結束日期和當前日期間辦理入住手續的日期差異或浮動我可以檢查DIFF的B/W日期的一個。但對不同的編碼檢查相同的東西沒有意義。 – srinisunka

回答

0

設置cronjob做這種東西。

0

爲您的查詢編寫3個單獨的sql語句讓這些工作。

然後把這些成的mysql_query在PHP如果行計數> 0

使用isset的可變進電子郵件的SMTP腳本

建立一個cron作業,檢查每天早晨設定的變量。

+0

當你只需要一個時,不要做三個查詢。 – 2011-10-03 08:07:17

0

SELECT *,DATEDIFF(CURDATE()日期,結束日期)作爲DIFF FROM表,其中在(1,2,8)

+0

你是否仔細閱讀了整個問題,因爲我認爲你錯過了60和1的情況下的15,4&1,在120情況下錯過了30,8,2&1。 – rahularyansharma

+0

你好Dagon,你的建議看起來很有幫助只有一個條件。但其他條件如何?我需要向所有人發送電子郵件提醒,所以我不確定是否可以針對每種情況編寫單獨的SQL查詢。 – srinisunka

0

你可以做的是DATEDIFF(CURDATE()日期,結束日期)創建2個表, 1爲主要預訂信息,第二個爲存儲發送日期(或發送提醒日期)。

當保存記錄時,您將檢索當前日期和end_date之間的差異;如果差值爲30,則必須在end_date之前8,2和1天存儲send_dates;與其他條件相同。

然後創建一個cron作業(每天運行)來檢查send_dates =當前日期的第二個表。如果符合條件,則發電子郵件。

希望這是你需要

+0

哪裏是用於查找這些日期的sql代碼?您是否錯過了 – rahularyansharma

+0

,因爲您在保存創建時保存發送日期,所以不需要sql代碼。對於cron作業,您只需檢查當前日期是否等於send_date。 SELECT tbl1。* FROM tbl2 INNER JOIN tbl1 on tbl2.tbl1_id = tbl1.id WHERE NOW()= tbl2.send_date – denil