0

601(わずか10分)未満の値を選択できるようにしようとしています。time()私はそれをフィールドで取って引きますtime。なぜ機能しないのかわかりません。誰かが説明したり、SQL を実行したりできますが、この能力はありません。あまり意味のないデータが得られますが、エラーは発生しません。

$pdo->query("SELECT * FROM `online` WHERE '".time()."'-`time` > 601");

機能していないようです。

データベース

データベース

サンプルデータ

id= 1

uid= 1

time= 1376252614 (正直なところ、なぜこれが なのかわかりませんTEXT。以前は問題がなかったので、問題ではないと思います)

4

2 に答える 2

1

MySQL で作業していて、time列がDATETIMEorTIMESTAMPデータ型の場合は、このクエリを試してください。

WHERE `time` >= NOW() - INTERVAL 601 SECOND

time列が Unix スタイルのタイムスタンプ (または整数を示すテキスト文字列) を含む整数である場合は、これを試してください。

WHERE `time` >= UNIX_TIMESTAMP() - 601

クエリを構造化するこの方法により、MySQL はtime列のインデックスを活用できます。ただし、タイムスタンプがテキスト文字列の場合、インデックスは少し奇妙に機能します。

timeこれは MySQL の予約語であるため、列名として最適ではないことに注意してください。常にバッククォートで囲むように注意する必要があります。そうしないと、奇妙なエラーが発生します。

于 2013-08-13T01:28:24.727 に答える