9

過去 24 時間で「いいね!」が最も多い 10 件のレコードを取得したいとします。これが私がこれまでに持っているものです:

$date = date("o-m-d");
$query = "SELECT date_created,COUNT(to),from,to FROM likes WHERE date_created LIKE '$date%' GROUP BY to ORDER BY COUNT(to) DESC LIMIT 10";

それに関する問題は、その日がどれだけ先であっても、その日からのみ最も高く評価されることです。過去 24 時間で最も「いいね!」されていません。

like の構造: from | へ | date_created | ID

日付は標準 ISO 時間です (例: 2010-07-14T00:35:31-04:00)。PHPリファレンスから直接来てください:date( "c");

4

4 に答える 4

19
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
于 2010-07-14T06:09:32.020 に答える
2

date_created フィールドが日時またはタイムスタンプ フィールド タイプの場合、次のように where 句で DATE_SUB を使用できます。


WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)

于 2010-07-14T06:12:09.290 に答える
1

LIKE ではなく、日付/時刻関数を使用する必要があります。

WHERE date_created >= (NOW() - INTERVAL 24 HOUR)
于 2010-07-14T06:10:04.910 に答える
1

したがって、最初に date_created を on のタイムスタンプとして定義する必要がありますdefault current timestamp。テーブルに date_modified もある場合、date_modified がありon update current timestamp、作成日をタイムスタンプとして定義し、このトリガーを更新して更新することができます。

CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()

タイムスタンプが得られたので、いくつかの mysql 日付関数を列に簡単に適用できます。

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

何をすべきかは、読者の演習として残しておきます。ただし、かなりお願いして、正確な構文を教えてほしいという場合を除きます。

于 2010-07-14T06:10:16.783 に答える