2

データベースにフィールドを保持し、何らかの時間で更新する必要があります。その後、その時間をチェックして、30分以上前かどうかを確認する必要があります。そうでない場合は、30分までの残り時間はどれくらいですか。

私はPHP+MySQLでこれを行うつもりですが、これを行う最も簡単な方法を誰かに教えてもらえますか?

ありがとう!!

4

3 に答える 3

0

テーブルの最後の更新/挿入が発生したのは何年前かを知りたいと仮定しましょう。
on update 句を使用して、タイムスタンプ フィールドを持つテーブルを設定できます。

CREATE TABLE foo (
  id int auto_increment,
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  primary key(id),
  key(ts)
)

次に、ts の最大値を持つレコードをクエリします

SELECT
  TIMEDIFF(Now()-Interval 30 Minute, ts)
FROM 
  foo
ORDER BY
  ts DESC
LIMIT
  1

編集: 過去 12 時間などに挿入/変更されたすべてのレコードを取得する場合にも機能します。

SELECT
  TIMEDIFF(Now()-Interval 30 Minute, ts)
FROM 
  foo
WHERE
  ts > Now()-Interval 12 hour
ORDER BY
  ts DESC

edit2: http://dev.mysql.com/doc/refman/5.1/en/show-table-status.htmlに興味があるかもしれません:

SHOW TABLE STATUS は次のフィールドを返します。
...
Update_time
データ ファイルが最後に更新された日時。一部のストレージ エンジンでは、この値は NULL です。たとえば、 InnoDB はそのテーブルスペースに複数のテーブルを格納し、データ ファイルのタイムスタンプは適用されません。MyISAM の場合、データ ファイルのタイムスタンプが使用されます。ただし、Windows では更新によってタイムスタンプが更新されないため、値は不正確です。

于 2009-07-08T17:24:50.397 に答える
0

私がしているのは、最新の記録にタイムスタンプを入れることです。MySQL クエリで最新のレコードを取得し、mysql フェッチ配列関数を使用してその最後のレコードの時刻を取得します。これは、時刻のみで更新されるデータベースを使用する場合と同じです。

現在の時刻をレコードの時刻と比較する関数を使用して、その時刻を操作できます。そこから、前回の投稿からの時間を表示し、30 分以上経過している場合はメッセージをエコーすることができます。

$currenttime = /* PHP Time Formatting you wish to use. */

$query = mysql_query("SELECT time FROM database");
$row = mysql_fetch_array($query);

echo "Last Record Posted @" . $row['time'];

$timesince = $currenttime - $row['time'];
echo "Time Since Last Post:" . $time - $row['time'];

if($timesince >= "30"){
echo "Over 30 Minutes!";
}

ご不明な点がございましたら、お知らせください。上記のコードは、それがどのように機能するかを示しているはずですが、これは大まかな例です。

頑張ってください!!

編集:::

申し訳ありませんが、質問を読み間違えました。データベースに時間を入力する必要があります。上記のコードを使用して時間を取得し、それが 30 分を超えているかどうかを確認することができます。

タイム スタンプについては、PHP Time Manualを参照してください。MySQL 入力と上記のコードの両方に同じ時間形式を選択することをお勧めします。

于 2009-07-08T17:18:25.340 に答える
0

次のような関数で MySql 呼び出しを挿入および更新するすべてをラップできます。

function MySqlQuery($query, $res){
    $result = mysql_query($qs, $res);
    if($result === false){
        mysql_query("QUERY STRING TO UPDATE FIELD IN DATABASE WITH NEW TIME", $res);
    }
    return $result;
}

「QUERY STRING TO UPDATE FIELD IN DATABASE WITH NEW TIME」を実際の更新クエリに置き換えれば、準備完了です。

于 2009-07-08T17:15:17.497 に答える