0

私はmqsqlデータベースにこのテーブルを持っています

create table datedemo(logintime timestamp,updatedtime timestamp);

updatedtime は、ユーザーが最後にアクティブだった時間を示します。クエリを実行したい

updatedtime と now() 時間の差が、ある値 (1000 秒) よりも大きい場合

以下のクエリはタイムスタンプの違いを示しますが、行を削除したいので、助けてください

SELECT NOW(), updatedtime, NOW() - updatedtime AS diff
FROM datedemo
HAVING diff IS NOT NULL;
4

2 に答える 2

0

これを試してください:

SELECT NOW(), updatedtime
FROM datedemo
WHERE updatedtime > NOW() - INTERVAL 1000 Second
;
于 2013-01-12T17:22:25.273 に答える
0
DELETE FROM datedemo WHERE TIMESTAMPDIFF(SECOND, NOW(), updatedtime) > 1000

ただ、更新時間ではなく、有効期限を保存した方が良いと思います。つまり、更新時にタイムスタンプではなく TIMESTAMPADD(SECOND, 1000, NOW()) を挿入します。このようにして、一度計算を行い、問題のチェックに関しては次のようにします。

DELETE FROM datedemo WHERE expirestime < NOW()

そのほうが効率がいいと思います。

于 2013-01-12T17:30:18.003 に答える