Aide SQL regroupement sur datetime...


OJAL
WRInaute passionné
WRInaute passionné
 
Messages: 1178
Inscription: 10 Avr 2003

Aide SQL regroupement sur datetime...

Message le Sam Juin 16, 2007 23:38

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

bigjet
WRInaute discret
WRInaute discret
 
Messages: 211
Inscription: 21 Nov 2004

Message le Sam Juin 16, 2007 23:56

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).


Bh@Mp0
WRInaute discret
WRInaute discret
 
Messages: 245
Inscription: 18 Jan 2005

Message le Dim Juin 17, 2007 8:29

Par exemple, si ton champ datetime s'appelle mydatetime :
Code: Tout sélectionner
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 :)


OJAL
WRInaute passionné
WRInaute passionné
 
Messages: 1178
Inscription: 10 Avr 2003

Message le Dim Juin 17, 2007 10:18

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!


Bh@Mp0
WRInaute discret
WRInaute discret
 
Messages: 245
Inscription: 18 Jan 2005

Message le Dim Juin 17, 2007 10:37

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: Tout sélectionner
COUNT(DISTINCT `id`) AS `count`

où id est une clef.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité