過去24時間で最も人気のあるPHP MySQLクエリ
-
15-09-2020 - |
質問
過去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時間から最も気に入りました。
好きな構造:|date_created |ID
日付は標準のISOタイムにあります - 例2010-07-14T00:35:31-04:00。PHPリファレンスからまっすぐに来てください:日付( "C");
解決
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
. 他のヒント
DATE_CREATEDフィールドがDATETIMEまたはTIMESTAMPフィールドタイプの場合は、WHERE句にDATE_SUBを次のように使用できます。
WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)
. だから最初にdate_createdは、default current timestamp
を持つタイムスタンプとして定義されます。テーブルにDATE_MODIFIEDがある場合は、DEAT_MODIFIEDにon update current timestamp
があり、タイムスタンプとして作成された日付とこのトリガーを更新するために定義できます
CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()
.
タイムスタンプを持っているので、MySQLの日付関数の一部を列に簡単に適用できます。
href="http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html" rel="nofollow noreferrer"> http://dev.mysql.com / doc / refman / 5.1 / en / date-and-time-関数.html
あなたがきれいな言うと、正確な構文を与えてもらえない限り、私は読者のための運動として何をすべきかを残します。
あなたは似ていなくても、日付/時刻関数を使用してください。
WHERE date_created >= (NOW() - INTERVAL 24 HOUR)
.