Aide SQL regroupement sur datetime...

  • Auteur de la discussion Auteur de la discussion OJAL
  • Date de début Date de début
WRInaute impliqué
Bonjour,

Je sohaite compter le nombre d'enregistrements sur une table jour par jour, mais voila, je n'ai pas stocké de champs date, j'ai simplement un champ DATETIME...
Quelle requête feriez-vous?
Ne serait-il pas intéressant de stocker la date lors de chaque enregistrement pour faciliter ensuite la requête??

Merci par avance ;-)
 
WRInaute discret
Tu récupère le timestamp de la journée (mktime en PHP), et ensuite tu contruis un intervalle (en rajoutant 24heures par exemple).

Et tu fais un SELECT between **debut_intervale** AND **fin intervalle**


Mais bon, pour manipuler les dates, vaut mieux utiliser un champ de type date (avis personnel).
 
WRInaute discret
Par exemple, si ton champ datetime s'appelle mydatetime :
Code:
SELECT *, DATE_FORMAT(`mydatetime`, '%d/%m/%Y') AS `mydate` FROM `mytable` GROUP BY `mydate`

J'ai supposé :
* qu'on prend tous les champs
* que la table s'appelle mytable
* que je n'ai pas de clause WHERE (il est possible d'en mettre une à votre convenance)
* qu'on laisse l'ordre par défaut (on pourrait ordonner avec un ORDER BY)

Ah ! Aussi, j'ai mis la date au format JJ/MM/YYYY, mais il est possible de choisir un format "universel" (YYYY-MM-JJ), ou un format bizarre (JJ#YYYY#MM, MM~YYYY~JJ, ...). C'est juste que j'ai considéré que la date au format français pourrait être réutilisée :)
 
WRInaute impliqué
Merci Bh@Mp0,

Juste une petite rectfication ;-)
Pour compter le nombre d'enregistrements, il suffit de faire un SELECT COUNT(*) au lieu du SELECT *

Tout fonctionne très bien et la requête semble assez légère ;-)

Merci!
 
WRInaute discret
Pardon, j'avais pas lu que tu voulais seulement compter le nombre d'enregistrements date par date. En effet, dans ce cas-là, autant faire un
Code:
COUNT(DISTINCT `id`) AS `count`
où id est une clef.
 
Discussions similaires
Haut