こんにちは、毎日午前 12 時に実行される cron ジョブの mysql クエリの日付ロジックと完全に混同しています。
車のリストの有効期限がmysqlの日時形式になっている自動リストWebサイトに取り組んでいます。
期限切れのすべてのリストは、有効期限の日時から 7 日後にウェブサイトから削除されます。
cronジョブが実行されると、次のことが行われます
タスク 1 - リストの有効期限が切れたことを知らせる電子メール アラートをユーザーに送信します。
そのため、最後に cron ジョブが実行されてから期限切れになったすべてのリストを選択し、それより前のリストは含めないようにして、リストごとに 1 回だけ期限切れアラート メールを送信する必要があります。
このタスクの次のSQLクエリを試しました(これも混同されています)
SELECT car_id FROM cars WHERE expiry_date > DATE_SUB(NOW(), INTERVAL 1 DAY) AND expiry_date < NOW()
タスク 2 - リストが 24 時間後に完全に削除されることを知らせる電子メール アラートをユーザーに送信します。
そのため、有効期限が切れてから 24 時間以上または 6 日以上経過した後に削除される予定のすべてのリストを選択する必要があり、最低 24 時間以内に更新できるようにする必要があります。また、1回限りの電子メールアラートではなく複数の電子メールアラートを回避するために、1日で期限切れになるリストのみが選択され、他のリストは選択されないように、SQLクエリを選択/構築する必要があります
このタスクの次のSQLクエリを試しました(このクエリと完全に混同しています)
SELECT car_id FROM cars WHERE expiry_date > DATE_SUB(NOW(), INTERVAL 7 DAY) AND expiry_date < DATE_SUB(NOW(), INTERVAL 1 DAY)
タスク 3 - 7 日以上前に有効期限が切れたすべてのリストを削除する
このタスクの次のSQLクエリを試しました
SELECT car_id FROM cars WHERE expiry_date < DATE_SUB(NOW(), INTERVAL 7 DAY)
cron が希望どおりに機能するように、3 つのクエリすべてを完成させるのを手伝ってください。また、それが >= (以上) または <= (以下) でなければならない場所を教えてください。
ここに sqlfiddle テーブル構造といくつかのレコードがあります (ただし、それらはまだ有効期限が切れていません)
http://sqlfiddle.com/#!2/cfcdf
本当に助かります。