質問

過去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)
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top