- ベストアンサー
SQL文の修正方法について
- sql文で現在の時間と比較し期間が来たら削除する方法について教えてください。
- PHPファイル内に記述されているsql文を修正して、指定した期間が経過した時に削除する方法を知りたいです。
- データベース内の特定のテーブルで、指定した期間が経過した場合に削除するsql文の書き方を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> 有効期限が切れた2週間後にレコードを削除するには、どう修正すればいいか分かりません。 DELETE FROM hogehoge WHERE DATE_ADD(limit_time, INTERVAL 2 WEEK) <= NOW()
その他の回答 (2)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
判定したいカラム < SUBTIME(NOW() , '01:00:00') とかで、NOWに対して加減算すれば、 望みの結果になるかとは思いますが。 そういう事ですかね。 上のサンプルは「1時間」なので、2週間なら14日にすれば OKでしょうけど。なので、2種類のやり方があるかと。 1. limit_timeを作るとき「2週間後の値」を入れて、NOWで判定するか 2. limit_timeを作るときNOWで入れて、判定の時NOW+2週間の値 のどちらかかな。。
補足
ご回答ありがとうございます。 NOWに対して加減算ですね、承知しました。 limit_timeの値事態は変更できないので、 limit_timeに「2週間後の値」を入れる場合、上の実際のソースに書き加えると、 $sql = "delete from hogehoge where limit_time< SUBTIME(NOW() , '01:00:00')<=now()"; ↑このようにすればよろしいでしょうか? 知識が足りず申し訳ありません。お手数ですが、ご回答いただければ大変助かります。
- t_ohta
- ベストアンサー率38% (5241/13712)
書かれているSQL分は hogehoge テーブルのレコードの内、limit_time カラムの日時が現在より古いレコードを削除するというモノです。 limit_time というカラム名からして、それがレコードの有効期限と言うことなんじゃないでしょうか。
補足
ご回答ありがとうございます。 limit_timeカラムの日時が現在より古いときに削除されるのですね。 おっしゃるとおりです。有効期限を指しているレコードなのですが、 この有効期限が切れたタイミングでレコードを削除するのではなく、 有効期限が切れた2週間後にレコードを削除するには、どう修正すればいいか分かりません。
お礼
教えていただいた内容で記述すると挙動しました。本当にありがとうございます!