IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Compter le nombre de jour par mois d'un événement.


Sujet :

Requêtes MySQL

  1. #1
    Invité
    Invité(e)
    Par défaut Compter le nombre de jour par mois d'un événement.
    Bonjour,

    j'ai un événement, représenté par une table. Cette table possède les champs date_debut et date_fin, au format datetime. Je cherche une requête qui me retourne le nombre de jours pour chaque mois où l'événement a lieu.

    Par exemple, un événement se déroule du 14 janvier au 7 février je veux avoir comme résultat :

    Mois;Jours
    1;18
    2;7

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    Salut, y a qu'une fonction stockée pour te faire ça...

    je crée la base common juste pour y mettre la fonction, si tu dois t'en servir dans différentes bases c'est plus simple. Sinon tu fais un use sur la base voulue et tu n'est pas obligé de préfixé avec le nom de ta base avant l'appel à la fonction.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    drop database if exists common;
    create database common default character set utf8 collate utf8_general_ci;
    use common;
     
    delimiter |
     
    create function periodes(debut datetime,fin datetime) returns text deterministic
    begin
    	declare duree int(4) default datediff(fin,debut);
    	declare retour text;
    	declare t char(7);
    	declare e int(4);
    	while debut<fin do
    		set e=datediff(last_day(debut),debut)+1;
    		set t=left(debut,7);
    		set debut=date_add(debut, interval e day);
    		set duree=duree-e;
    		set retour=concat_ws("#",retour,concat(t,";",if(debut<fin,e,duree+e+1)));
    	end while;
    	return retour;
    end|
     
    delimiter ;
     
    select common.periodes("2010-01-14","2010-02-07");
    Ici, tes résultats sont donc séparés par "#"... on ne peut sortir un jeu de résultats donc on les concatène... c'est facile à parser ou à scinder ensuite en sql ou php...

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse, je vais tester ça !

Discussions similaires

  1. [VxiR2] Calcul du nombre de jours par mois entre deux date
    Par trabelsi dans le forum Designer
    Réponses: 4
    Dernier message: 02/10/2017, 15h17
  2. [XL-2003] Compter le nombre de jours par mois entre deux dates
    Par Mikayel dans le forum Excel
    Réponses: 8
    Dernier message: 23/09/2016, 13h36
  3. Réponses: 2
    Dernier message: 23/06/2009, 13h36
  4. Compter le nombre d'articles par mois
    Par Al3x dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/08/2008, 18h14
  5. Réponses: 6
    Dernier message: 12/01/2008, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo