2012-02-26 10 views
0

PHPを使用してmysqlテーブルにレコードを挿入して更新しています。 2つのフィールドw/timeデータ型の差が15分を超える場合は、is_logoutフィールドを1に更新したいとします。MySQLで2つのフィールドw/timeデータ型を差し引く

私はtime_startとtime_latestを持っています。

クエリは次のようになります。

UPDATE table set is_logout = 1 WHERE (time_latest - time_start) > 15 

はどのようにこれを行うには?クエリ

UPDATE table set is_logout = 1 WHERE (NOW() - time_start) > 15

NOW()以下

+1

なぜis_logoutフィールドを持っているのですか?非正規化の理由は何ですか? –

+0

私の訪問者がページを開くと、time_startとis_logoutが0に設定されます。ビジターがページを閉じると、is_logoutフィールドが1に更新されます。スクリプトがアンロードイベントを検出できない場合は、ビジターをアクティブではないとみなし、is_logoutを0から1に変更します。 – jaypabs

+0

フィールド、最後のログイン時刻を選択するだけで –

答えて

2

使用すると、あなたの現在の時間を与えるだろう。あなたのデータベースにtime_startがいると思います。

+0

ありがとうございます。しかし、私はフィールドにそれを含めるようにテストするので、その違いの値を見ることができます結果は正しくありません。 time_formatを追加しました。時間だけを含める:TIME_FORMAT(NOW()、 '%H:%i:%s') - time_start。現在の時刻が02:48:43で、time_startが02:35:52の場合、結果は-23538になります。結果は14分とする。 – jaypabs

+0

MINUTE(TIMEDIFF(TIME_FORMAT(NOW()、 '%H:%i:%s')、time_start))を使って変更しました。それは今働きます。ヒントのおかげで。 – jaypabs

+0

'NOW() - time_start'は分数ではなくミリ秒を与える必要があります... –

関連する問題