Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1797 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Dates en sql...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Dates en sql...

n°1441681
manuzed
Posté le 13-09-2006 à 12:02:22  profilanswer
 

Bonjour a tous
 
Voici mon petit probleme:
je veux faire des statistiques sur une table en fonction d'un champ de type date
Pour l'année je faisais un truc du genre:
SELECT COUNT(id_direction) AS nb FROM interventions
WHERE id_direction='1'
AND date_saisie like '$annee%'" ou $annee était l'annee qui m'interessait
 
jusque la pas de probleme
mais ensuite je veux faire des stats par mois
alors j'ai essayé ca
 
SELECT COUNT(id_direction) AS nb FROM interventions
WHERE id_direction='1'
AND date_saisie like '$annee-$mois%'"  
mais comme je fais une boucle avec ma variable $mois
si $mois=1 par exemple alors il trouve aucun resultat car 1 n'est pas égal à 01 (format de stockage date mysql) pour lui !
 
j'ai bien la possibilité de coder en dur mais cela m'empeche de faire ma boucle...
j'ai essayé ceci
SELECT COUNT(id_direction) AS nb FROM interventions
WHERE id_direction='1'
AND date_saisie like '$annee-_$mois%'" le underscore ajoute 1 caractere variable
mais cela fonctionne pour les 9 premiers mois seulement!
 
Quelqu'un a t il une idée pour me faire progresser?
 
Merci

mood
Publicité
Posté le 13-09-2006 à 12:02:22  profilanswer
 

n°1441687
anapajari
s/travail/glanding on hfr/gs;
Posté le 13-09-2006 à 12:06:51  profilanswer
 

ta 1ere requête est déjà pas top:

Code :
  1. SELECT year(date_saisie), COUNT(id_direction) AS nb FROM interventions
  2. WHERE id_direction='1' AND year(date_saisie) = $annee GROUP BY year(date_saisie)


ensuite pour le mois

Code :
  1. SELECT month(date_saisie), year(date_saisie), COUNT(id_direction) AS nb FROM interventions
  2. WHERE id_direction='1' AND year(date_saisie) = $annee GROUP BY month(date_saisie), year(date_saisie)


n°1441691
manuzed
Posté le 13-09-2006 à 12:11:24  profilanswer
 

Ok, cool
en effet de voir ton code me fait réaliser qu'il me manque quelques connaissances...
et que mon code partait d'une bonne logique mais montre vite ses limites ;-)
Merci pour tout

n°1441699
MagicBuzz
Posté le 13-09-2006 à 12:25:02  profilanswer
 

perso, je préfère travailler avec datepart() que year(), month(), etc. ça permet d'avoir une fonction plus générique pour un résultat identique et plus de possibilités (semaine, jour de la semaine, etc.)

n°1441702
manuzed
Posté le 13-09-2006 à 12:26:47  profilanswer
 

Probleme: suite  
Voici le code qui fonctionne
SELECT YEAR (date_saisie), MONTH(date_saisie), COUNT(id_direction) AS nb FROM interventions
WHERE id_direction='1'
AND YEAR (date_saisie)= '$annee'
AND MONTH(date_saisie)= '$mois'
GROUP BY month(date_saisie), year(date_saisie)
 
Je n'ai plus que 1 probleme, quand il n'y a pas de resultat il n'affiche pas 0
ce que "j'avais résolu" avec un left join auparavant
 
est il possible de mixer les 2 ?

n°1445140
bastoonet2​3
pouet !
Posté le 20-09-2006 à 11:44:09  profilanswer
 

...tu fais les 2 requetes..et une UNION entre les 2..


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Dates en sql...

 

Sujets relatifs
Comparer les dates presentes ds un fichier a la date courante[Java] Calcul d'un nombre d'heure entre 2 dates
calculer une valeur entre deux datesProblème tri de dates par année puis mois
Calcul du nombre de mois entre 2 datesdates javascript ajouter mois,semaines,jours,...
Aide sur SQL concernant des dates/durées[JS] Pb avec les dates :(
[Caml] datesdifficultés à manipuler les dates/heures pr Macro Excel
Plus de sujets relatifs à : Dates en sql...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR