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 et SQL. Discussion :

Calculer l'écart entre 2 dates [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut Calculer l'écart entre 2 dates
    Bonjour,

    Comment calculer l'écart entre 2 dates qui sont dans la même colonne.
    J'ai une table avec les champs suivants:
    - DateRecp
    - Journée
    - CAP

    Dans ma requête SQL, j'ai essayé DiffDate de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ecart:DiffDate("j";[DateRecp];[DateRecp])
    j'ai comme résultat: 0, ce qui est logique.

    Comment faire pour trouver l'écart entre les 2 dates?

    Merci d'avance de votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Points : 248
    Points
    248
    Par défaut
    Bonjour,

    C'est réalisable en utilisant les fonctions de domaine, en l'occurrence RechDom me semble la plus adaptée d'après vos éléments.

    Bcdt

  3. #3
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Re bonjour,

    J'ai trouvé dans le livre "SQL par l'exemple" de A. Molinaro un exemple.

    C'est de "déterminer le nombre de jours séparant les dates de l'enregistrement courant et du suivant", que je n'arrive pas à appliquer pour ma problématique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT x.*, 
    DateDiff("j",x.date_deb,x.de_suivante) AS Ecart
    FROM (SELECT DateRecp, Journée,CAP,
    (SELECT min(d.date_deb) from tblUnité
    WHERE d.date_deb > DateRecp) de_suivante
    from tblUnité
    WHERE CAP = "A9"
    )  AS x;
    Quelqu'un a t-il une idée?
    Merci de votre aide

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 693
    Points : 57 250
    Points
    57 250
    Billets dans le blog
    41
    Par défaut
    rebonjour Christian,

    quelques idées à tester...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (SELECT min(d.date_deb) from tblUnité as d
    WHERE d.date_deb > DateRecp) de_suivante

    peut-être même:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (SELECT min(d.date_deb) from tblUnité as d
    WHERE d.date_deb > DateRecp AND d.CAP="A9") de_suivante

  5. #5
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Bonjour Fabien,

    j'ai trouvé 2 solutions qui me donnent le résultat attendu.
    Par-contre cela me bloque access (temps de réponse énorme quand je clic dans la feuille de donnée ou accéder au pgm )???
    Peut-être est-ce du au nbr d'enregistrement (+ de 200 000)

    La 1er solution est celle que j'ai posté, j'ai apporté ta modif et une autre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT x.*, 
    DateDiff("D",x.DateRecp,x.de_suivante) AS Ecart
    FROM (
    SELECT DateRecp, Journée,CAP,
    (SELECT min(d.DateRecp) from tblUnité as d
    WHERE d.DateRecp > e.DateRecp) AS de_suivante
    from tblUnité as e
    WHERE CAP = "A9"
    )  AS x;
    Cette requête me créer 4 colonnes.
    -La 1er date
    -la date suivante
    -la col Ecart (différence entre les deux dates)
    -la col CAP (critère)

    La 2ème solution qui donne le même résultat et le même souci (bloque access)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT x.*, 
    x.de_suivante – x.DateRecp AS Ecart
    FROM (
    SELECT DateRecp, Journée,CAP,
    (SELECT min(d.DateRecp) from tblUnité as d
    WHERE d.DateRecp > e.DateRecp) AS de_suivante
    from tblUnité as e
    WHERE CAP = "A9"
    )  AS x;
    Ma question est de savoir pourquoi Access a un temps de réponse énorme (même quand les requêtes sont terminées)

    Ha, une autre question : Comment fais-tu la différence entre Code SQL: et le Code VBA:, dans la balise code

    Merci

  6. #6
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    re Fabien,

    Bon, après quelques tests, j'ai suis passé par une table intermédiaire.
    C'est à dire, que selon le (les) critère(s) j'inserre mes données dans une table intermédiaire.
    Puis, j'exécute l'une des 2 requêtes sur cette table.
    Je n'ai plus le problème du temps de réponse et Access ne se bloque plus.

    Je pense que je vais en rester là, sauf si il y a une autre solution
    Qu'en penses-tu?

  7. #7
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 693
    Points : 57 250
    Points
    57 250
    Billets dans le blog
    41
    Par défaut
    Bonjour,

    à part peut-être rajouter un index sur DateRecp et un autre sur CAP si ce n’est déjà fait, je ne vois pas mieux , désolé.

  8. #8
    Membre habitué
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Points : 151
    Points
    151
    Par défaut
    Bonjour Fabien,

    Bon, je vais clore la discussion.
    Pour l'instant, je vais continuer avec cette table intermédiaire.
    Je reviendrai plus tard, afin de voir si cela est possible d'améliorer ce module.
    Le "Chef" attend des résultats..........

    Merci de ton aide
    @+

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 693
    Points : 57 250
    Points
    57 250
    Billets dans le blog
    41
    Par défaut
    bonjour Christian,

    je n'ai peut-être pas bien saisi l'objectif mais dans la sous-requête:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (SELECT min(d.DateRecp) from tblUnité as d
    WHERE d.DateRecp > e.DateRecp) AS de_suivante

    tu vas rechercher les dates suivantes parmi toutes les occurences de tblUnité même parmi celles où CAP est différent de "A9"

    par exemple: date=01/01/2011 (CAP="A9") et De_suivante=02/01/2011 (mais CAP="A10" par exemple pour cette date suivante)

    C'est pour cela que j'avais proposé:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (SELECT min(d.DateRecp) from tblUnité as d
    WHERE d.DateRecp > e.DateRecp AND d.CAP="A9") AS de_suivante

    pour le coup, la requête devrait être plus rapide avec cette restriction mais peut-être me trompé-je dans le raisonnement avec ce champ CAP?

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

Discussions similaires

  1. [AC-2007] Calculer écart entre les dates de deux enregistrements successifs.
    Par tAKAmAkA dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 14/10/2010, 16h27
  2. [LV 2009] Calcul écart entre deux dates/heures
    Par K-RK-S dans le forum LabVIEW
    Réponses: 3
    Dernier message: 10/09/2010, 10h04
  3. Réponses: 4
    Dernier message: 21/11/2008, 10h54
  4. [Dates] Calcul d'écart entre 2 dates
    Par Sytchev3 dans le forum Langage
    Réponses: 4
    Dernier message: 17/10/2007, 01h39
  5. [VBA-E] Calculs d'écarts entre 2 dates
    Par harpic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/12/2006, 16h48

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