• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:sql文で現在の時間と比較し期間が来たら削除したい)

SQL文の修正方法について

このQ&Aのポイント
  • sql文で現在の時間と比較し期間が来たら削除する方法について教えてください。
  • PHPファイル内に記述されているsql文を修正して、指定した期間が経過した時に削除する方法を知りたいです。
  • データベース内の特定のテーブルで、指定した期間が経過した場合に削除するsql文の書き方を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.3

> 有効期限が切れた2週間後にレコードを削除するには、どう修正すればいいか分かりません。 DELETE FROM hogehoge WHERE DATE_ADD(limit_time, INTERVAL 2 WEEK) <= NOW()

about29
質問者

お礼

教えていただいた内容で記述すると挙動しました。本当にありがとうございます!

その他の回答 (2)

回答No.2

判定したいカラム < SUBTIME(NOW() , '01:00:00') とかで、NOWに対して加減算すれば、 望みの結果になるかとは思いますが。 そういう事ですかね。 上のサンプルは「1時間」なので、2週間なら14日にすれば OKでしょうけど。なので、2種類のやり方があるかと。 1. limit_timeを作るとき「2週間後の値」を入れて、NOWで判定するか 2. limit_timeを作るときNOWで入れて、判定の時NOW+2週間の値 のどちらかかな。。

about29
質問者

補足

ご回答ありがとうございます。 NOWに対して加減算ですね、承知しました。 limit_timeの値事態は変更できないので、 limit_timeに「2週間後の値」を入れる場合、上の実際のソースに書き加えると、 $sql = "delete from hogehoge where limit_time< SUBTIME(NOW() , '01:00:00')<=now()"; ↑このようにすればよろしいでしょうか? 知識が足りず申し訳ありません。お手数ですが、ご回答いただければ大変助かります。

  • t_ohta
  • ベストアンサー率38% (5241/13712)
回答No.1

書かれているSQL分は hogehoge テーブルのレコードの内、limit_time カラムの日時が現在より古いレコードを削除するというモノです。 limit_time というカラム名からして、それがレコードの有効期限と言うことなんじゃないでしょうか。

about29
質問者

補足

ご回答ありがとうございます。 limit_timeカラムの日時が現在より古いときに削除されるのですね。 おっしゃるとおりです。有効期限を指しているレコードなのですが、 この有効期限が切れたタイミングでレコードを削除するのではなく、 有効期限が切れた2週間後にレコードを削除するには、どう修正すればいいか分かりません。

関連するQ&A