0

「有効期限」で MySQL テーブルを更新しようとしています。人々がテーブルに登録したため、すべての行のタイムスタンプ値を収集しましたが、現在の時刻ではなく、そのタイムスタンプに相対的な有効期限を作成したいと考えています。これが私のコードです:

$timestamp = $row['timestamp'];
$sql_update = "
UPDATE jobs
SET expiration_date = DATE_ADD('$timestamp',INTERVAL 56 DAY)";
$result_update = $mysqli->query($sql_update) or die($mysqli->error);

これは「while」ループで実行されているため、テーブルの各行を実行しながら更新していることを理解してください。問題は、一度実行しただけで、'expiration_date' 行をタイムスタンプの値から 56 日後ではなく、現在から 56 日後に更新したことです。タイムスタンプは、新しいエントリが登録されたときにCURRENT_TIMESTAMPに設定されますが、これが問題であると想定しています。トラブルシューティングのために $timestamp をエコーアウトしましたが、エコーすると正しい値 (現在の時刻ではない) がエコーアウトされますが、実際に有効期限を更新しようとすると、それが CURRENT_TIMESTAMP であるという事実から引き出されているようです。タイムスタンプの値を明示的にクエリする方法はありますか?

データベースの再構築を伴わない方法を見つけたいと思っています。タイムスタンプ行の代わりにそれを使用できることはわかっているので、データベースを最初にクエリして行を追加するときに、それを日時行にして NOW() の値に設定できますが、テーブルが現在設定されている方法。ありがとう!

4

2 に答える 2