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");

War es hilfreich?

Lösung

generasacodicetagpre.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top