次の2つのテーブルがあります
# 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 123@example.com 15 minute 0
2 1 234@example.com 01 day 0
3 3 655@example.com 01 week 0
4 4 888@example.com 40 minute 0
5 4 999@example.com 42 minute 1
5 4 987@example.com 30 minute 0
毎分、cron ジョブは PHP スクリプトを実行して、通知テーブルの電子メール アドレスに通知を送信する必要があるかどうかを確認します。時間の値は、リマインダーを送信するイベントの開始日までの相対時間です。
たとえば、cron ジョブが2013-05-06 20:15:00に実行される場合、メールはメール アドレス123@example.comに送信されます。送信済みフラグも考慮する必要があります。これが 0 に設定されている場合、送信日より前の場合でも、すべての通知を送信する必要があります。たとえば、cron ジョブが2013-07-09 10:26:00に実行される場合、メールは987@example.comおよび888@example.comに送信されます。
私の質問は、実際の (now()) 日付の上記の要件を満たすために、mysql でクエリをどのように取得して通知を取得する必要があるかということです。date_subで試しましたが、実際には成功しませんでした。助けていただければ幸いです。