PHP-MySQL-Abfrage am beliebtesten in den letzten 24 Stunden
-
15-09-2020 - |
Frage
Angenommen, ich möchte in den letzten 24 Stunden zehn Platten mit den MEISTEN Likes erhalten.Folgendes habe ich bisher:
$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";
Das Problem dabei ist, dass es nur ab DIESEM TAG die meisten Likes erhält, egal wie weit dieser Tag bereits fortgeschritten ist.Es hat in den letzten 24 Stunden nicht die meisten Likes erhalten.
Struktur für Likes: von | zu | Date_Created | Ausweis
Datumsangaben erfolgen in der Standard-ISO-Zeit – Beispiel 2010-07-14T00:35:31-04:00.Komme direkt aus der PHP-Referenz:date("c");
Lösung
Andere Tipps
Wenn Ihr DATE_CREATED-Feld ein DateTime- oder Timestamp-Feldtyp ist, können Sie Date_sub in Ihrer WHER-Klausel wie folgt verwenden.
generasacodicetagpre.Daher sollte date_created zunächst als Zeitstempel mit on definiert werden default current timestamp
.Wenn Sie auch ein date_modified in der Tabelle haben, dann wäre date_modified vorhanden on update current timestamp
und Sie können das Erstellungsdatum als Zeitstempel und diesen Auslöser definieren, um es zu aktualisieren
CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()
Da wir nun einen Zeitstempel haben, können Sie einige der MySQL-Datumsfunktionen problemlos auf die Spalte anwenden.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Was zu tun ist, überlasse ich dem Leser als Übung, es sei denn, Sie sagen „Schön bitte“ und möchten, dass ich die genaue Syntax gebe.
Sie sollten Datums- / Zeitfunktionen verwenden, anstatt.
generasacodicetagpre.