-2

私の「user」テーブルは次のようになります..

 id   |   name  |   time

 1    |    a1   |  2012-11-15 06:20:28

 2    |    a2   |  2012-11-14 06:20:28

 3    |    a3   |  2012-11-13 06:20:28

今私の問題は、現在の時間または現在の時間より 30 秒短い時間のユーザーの詳細を取得するにはどうすればよいかということです。

私は試した..

"SELECT * 

FROM user

WHERE strtotime(user_session.session_timestamp)-30 < ".time().")";

動作していません...構文エラーがスローされます

問題を解決するのを手伝ってください

4

3 に答える 3

5

PHPは必要ありません。MySQL の日付と時刻の関数を使用できます。

SELECT * FROM user WHERE time BETWEEN (NOW() - INTERVAL 30 SECOND) AND NOW();

注:このクエリは、日付関数によってクエリがキャッシュされないため、最適化されていません。これが大きな懸念事項である場合は、同等の PHP を使用する方がパフォーマンスが向上する可能性があります。

于 2013-02-19T18:53:16.913 に答える
0

そんなことはできません。SELECT2 つの異なるステートメントを実行する必要があります。を収集するための 1 つuser_session.session_timestamp。PHPstrtotime()関数を呼び出してから、この現在のステートメント-30でその変数を使用します。SELECTこのセットアップの方法によっては、を使用しforeach( $array as $key => $value)てステップスルーし、個々のリターンを取得するために必要な数の選択を実行する場合があります。多くの問題は、SQL ステートメントで使用されている PHP 関数です。

または、ジェイソンが言ったことを実行してください!純粋な SQL は常に優れていますが、何らかの理由で PHP を使用する必要がある、または使用したいと考えていると思います。PHP のデータへのアクセスが必要になる重要な理由がいくつかあります。

于 2013-02-19T18:57:15.647 に答える
0

strtotime() は PHP 関数であり、MySQL ではありません。

于 2013-02-19T18:54:41.803 に答える