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

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top