Requête PHP MySQL la plus populaire au cours des dernières 24 heures
-
15-09-2020 - |
Question
Supposons que je souhaite obtenir dix enregistrements avec le PLUS de likes au cours des dernières 24 heures.Voici ce que j'ai jusqu'à présent :
$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";
Le problème avec ça c'est qu'il n'est le plus apprécié que ce jour-là, peu importe à quel point ce jour-là se trouve.Ce n'est pas celui qui a été le plus apprécié au cours des dernières 24 heures.
structure pour les likes : à partir de | à | date_created | id
les dates sont en heure ISO standard - exemple 2010-07-14T00:35:31-04:00.Venez directement de la référence PHP :date("c");
La solution
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
Autres conseils
Si votre champ Date_Créré est un type de champ DateTime ou horodatage, vous pouvez utiliser Date_Sub dans votre clause suivante comme suit;
WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)
Donc, tout d'abord, date_created doit être défini comme un horodatage avec on default current timestamp
.Si vous avez également un date_modified dans le tableau, alors date_modified aurait on update current timestamp
et vous pouvez définir avec la date de création un horodatage et ce déclencheur pour le mettre à jour
CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()
Maintenant que nous avons un horodatage, vous pouvez facilement appliquer certaines fonctions de date MySQL à la colonne.
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html
Je vais laisser ce qu'il faut faire comme exercice pour le lecteur, à moins que vous ne disiez plutôt s'il vous plaît et que vous souhaitiez que je donne la syntaxe exacte.
Vous devez utiliser des fonctions de date / heure, au lieu de comme.
WHERE date_created >= (NOW() - INTERVAL 24 HOUR)