我有以下兩個表Mysql的相對日期減法
# Event table
id title start_date end_date
----------------------------------------------------------
1 Foo 2013-05-06 20:30:00 2013-05-06 22:45:00
2 Bar 2013-06-03 07:40:00 2013-05-06 10:45:00
3 Demo 2013-05-02 00:22:00 2013-05-06 03:45:00
4 Test 2013-07-09 10:56:00 2013-05-06 13:45:00
# Notification table
id event_id mail time type sent
----------------------------------------------------------
1 1 [email protected] 15 minute 0
2 1 [email protected] 01 day 0
3 3 [email protected] 01 week 0
4 4 [email protected] 40 minute 0
5 4 [email protected] 42 minute 1
5 4 [email protected] 30 minute 0
每分鐘cron作業執行PHP腳本來檢查的通知應當在通知表發送到電子郵件地址。時間值是應該發送提醒時事件開始日期之前的相對時間。
例如,當cron作業運行在2013年5月6日20點15分00秒電子郵件應該發送到的電子郵件地址[email protected]。發送的標誌也應該被考慮。如果它設置爲0,那麼如果低於發送日期,則也應發送所有通知。例如,當cron作業運行在2013-07-09 10:26:00郵件應發送到[email protected]和[email protected]。
我的問題是,查詢如何看起來像在MySQL中以獲取通知以滿足上述實際(現在())日期的要求?我試過date_sub,但並沒有真正成功。一個幫助真的很感激。
很難說,但一個道理。保持通知表格中的類型是一個醜陋的數據庫設計 –
什麼是更好的方法?您的評論並不真正有幫助! – Laoneo
保留查找表中的所有類型並在通知表中保留其引用可能會加速Gordon的動態計算 –