Disons que je veux avoir dix disques avec le plus de goûts au cours des dernières 24 heures. Voici ce que j'ai jusqu'à présent: Le problème avec celui-ci strong> est qu'il ne fait que le plus aimé de ce jour-là, peu importe la situation dans ce jour-là . Il ne s'agit pas du plus grand nombre des 24 dernières heures. P> Structure pour les goûts: strong> de | à | Date_Créré | ID P> Les dates sont en standard ISO Time - Exemple 2010-07-14T00: 35: 31-04: 00. Viens directement de la référence PHP: date ("c"); p> p>
4 Réponses :
WHERE date_created > DATE_SUB( NOW(), INTERVAL 24 HOUR)
@Dave Rix Bienvenue à Stackoverflow. :)
Vous pouvez également utiliser des opérateurs arithmétiques tels que maintenant () - intervalle 24 heures code>
Vous devez utiliser des fonctions de date / heure, au lieu de comme.
@haim Evgi Oui, j'ai remarqué cette erreur après avoir soumis la réponse. :)
bonne réponse, mais il y a un problème: nous devrions traiter le temps dans PHP pas mysql
@narcisradu pourquoi cela serait-il?
@George Marian 1. Si le serveur SQL et PHP sont sur deux machines différentes, les données de temps sont plus précises 2. Si le serveur de base de données est encore un autre fuseau horaire, les choses commencent à sortir de la synchronisation.
@narcisradu Bien sûr, mais ce sont la situation. Vous pouvez synchroniser le temps sur vos serveurs à quelques secondes au moins. Si ces quelques secondes font une différence, vous y occupez; potentiellement comme vous avez suggéré. Idem pour le point 2, qui est assez atypique.
Il devrait être intervalle 24 heures et non 24 heures
SO PREMIER OFF DATATE_CREATED doit être défini comme un horodatage avec sur horodatage actuel par défaut code>. Si vous avez une date_modifiée dans la table, alors date_modified aurait
sur la mise à jour de l'horodatage actuel de code> et vous pouvez définir avec la date créée en tant que horodatage et ce déclencheur pour la mettre à jour
CREATE TRIGGER likes_date_entered
BEFORE INSERT ON likes
FOR EACH ROW SET NEW.date_created = NOW()
Les conditions de George ou de Hami fonctionneront une fois que vous avez modifié le type de données.
Vous savez, ma réponse est meilleure :-p calculer l'horodatage en PHP est une mauvaise idée: «Les dates sont en standard ISO Time - Exemple 2010-07-14T00: 35: 31-04: 00. Venez droit de la référence PHP: date ("C"); "
Si votre champ Date_Créré est un type de champ DateTime ou Timeestamp, vous pouvez utiliser Date_Sub dans votre clause où la clause suivante suivante;
WHERE date_created > DATE_SUB(NOW(), INTERVAL 24 HOUR)
Mon type de données est Varchar, qu'est-ce que je fais maintenant ...