0

テーブルのDATETIMEフィールドを更新しようとしています。私が望んでいるのは、期限が切れる前に常に3時間あることです。

私の現在のコードは次のとおりです。

UPDATE mindcore_sessions
  SET session_time = DATE_ADD(session_time, INTERVAL 3 HOUR)
  WHERE session_id = '$sessionId';

値の例は次のとおり2013-02-11 00:00:00です。このクエリを実行すると、次のように変更されます2013-02-11 03:00:00。どちらが正しい。ただし、再度実行すると、に変わります2013-02-11 06:00:00

私が望んでいるのは、常に3時間先にあることです。これを説明するのは難しいですが、もう一度実行しても同じままにしておきたいだけです。そして、1分後に再度実行する場合は、1分だけインクリメントしたいと思います。

質問が冗長な場合は申し訳ありませんが、私は完全に混乱しています(そしてそれは遅いです!)。

ありがとう :)

4

3 に答える 3

3

最後に3時間を追加する代わりに、:session_timeに3時間を追加します。NOW()

update mindcore_sessions
set session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR)
where session_id = '$sessionId';`
于 2013-02-11T21:17:49.050 に答える
2

NOW()現在の値に追加する代わりに、に間隔を追加します。

UPDATE mindcore_sessions SET session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) WHERE session_id = '$sessionId';
于 2013-02-11T21:17:51.173 に答える
1

mysqlには、同じクエリが以前に実行されたかどうかを知る方法はありません。

考えられる唯一の解決策は、元の値を追加の列に保存し、この列を使用して値が過去に変更されたかどうかを確認することです。

値をから3時間先に進めたい場合は、次のようにするだけです。

DATE_ADD(NOW(), INTERVAL 3 HOUR)

于 2013-02-11T21:18:11.320 に答える