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 :

Retourner le nombre de jours par mois d'une période donnée [MySQL-5.1]


Sujet :

Requêtes MySQL

  1. #1
    Membre averti Avatar de Amélie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 308
    Points
    308
    Par défaut Retourner le nombre de jours par mois d'une période donnée
    Bonjour,

    J'ai la table suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    |------------|------------|
    |  date_deb  |  date_fin  |
    |------------|------------|
    | 2016-01-10 | 2016-01-15 |
    | 2016-01-12 | 2016-01-16 |
    | 2016-01-21 | 2016-02-10 |
    | 2016-01-31 | 2016-02-15 |
    |------------|------------|
    J'ai besoin de calculer le total de jours pour uniquement janvier.
    Soit 6 + 5 + 11 + 1 = 23 jours

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut Amélie Ladoque.

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
        DEFAULT CHARACTER SET `latin1`
        DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    drop table if exists `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`        integer unsigned  NOT NULL AUTO_INCREMENT,
      `date_deb`  date              NOT NULL,
      `date_fin`  date              NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`date_deb`,`date_fin`) values
      ('2016-01-10', '2016-01-15'),
      ('2016-01-12', '2016-01-16'),
      ('2016-01-21', '2016-02-10'),
      ('2016-01-31', '2016-02-15')
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+------------+------------+
    | id | date_deb   | date_fin   |
    +----+------------+------------+
    |  1 | 2016-01-10 | 2016-01-15 |
    |  2 | 2016-01-12 | 2016-01-16 |
    |  3 | 2016-01-21 | 2016-02-10 |
    |  4 | 2016-01-31 | 2016-02-15 |
    +----+------------+------------+
    --------------
    select     datediff(LEAST(date_fin, '2016-01-31'), date_sub(date_deb, interval 1 day))  as 'calc' from test
    --------------
     
    +------+
    | calc |
    +------+
    |    6 |
    |    5 |
    |   11 |
    |    1 |
    +------+
    --------------
    select sum(datediff(LEAST(date_fin, '2016-01-31'), date_sub(date_deb, interval 1 day))) as 'calc' from test
    --------------
     
    +------+
    | calc |
    +------+
    |   23 |
    +------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre averti Avatar de Amélie Ladoque
    Inscrit en
    Novembre 2004
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 249
    Points : 308
    Points
    308
    Par défaut
    Je te remercie pour cette réponse très complète et très satisfaisante.

+ Répondre à la discussion
Cette discussion est résolue.

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, 16h17
  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, 14h36
  3. Compter le nombre de jour par mois d'un événement.
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/04/2011, 12h56
  4. [AC-2007] Calcul du nombre de jours par mois entre deux dates
    Par arouxy dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/01/2010, 09h34
  5. Réponses: 6
    Dernier message: 12/01/2008, 19h21

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