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 :

TimeDiff entre 2 champs de la même table et de deux enregistrement différentes [MySQL-5.7]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Par défaut TimeDiff entre 2 champs de la même table et de deux enregistrement différentes
    Bonjour,

    j'ai une table qui contient deux colonnes de type Time nommés : Heure début et heure fin.

    je veux faire une requête avec MySQL qui permet de calculer le Timediff entre la heure fin de la 1ere ligne de ma table et heure debut de la ligne suivante, qui ont la même date.
    j'arrive pas à le faire.

    EXEMPLE :

    Date HEURE DEBUT HEURE FIN
    ligne 1: 11/03/2020 15:03:02 15:05:02
    ligne 2: 11/03/2020 16:05:02 16:06:00
    ligne 3: 12/05/2020 08:00:00 08:05:00
    ligne 4: 12/05/2020 08:20:00 08:45:00

    ce que je veux faire: LE TIMEDIFF entre ligne2[Heure début] -ligne1 [Heure Fin] de la même journée, et ainsi de suite pour la prochaine date.

    j'ai besoin de votre aide, Merci!

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 138
    Par défaut
    Tu pourrais partir de quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    select  crt.la_date
        ,   crt.heure_debut
        ,   max(prc.heure_fin)  as fin_precedent
    from    matable as crt
        inner join
            matable as prc
            on  crt.la_date     = prc.la_date
            and crt.heure_debut > prc.heure_fin
    group by crt.la_date
        ,   crt.heure_debut
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Par défaut
    merci infiniment pour votre réponse.

    j'ai essayé ça mais ça marche pas:
    en fait ce que je voulais comme résultat est celui là dans le TIMEDIFF:

    Date HEURE DEBUT HEURE FIN TIMEDIFF
    ligne 1: 11/03/2020 15:03:02 15:05:02 -
    ligne 2: 11/03/2020 16:05:02 16:06:00 (16:05:02) - (15:05:02) ce qui donne 01:00:00
    ligne 3: 12/05/2020 08:00:00 08:05:00 -
    ligne 4: 12/05/2020 08:20:00 08:45:00 (08:20:00) - (08:05:00) ce qui donne 00:15:00

    je veux ça comme résultat pour savoir ceux qui ont un TIMEDIFF moins ou égal à 15 minutes, ceux de la même date.

    Merci encore.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 138
    Par défaut
    Citation Envoyé par Mawa31 Voir le message
    j'ai essayé là mais çà marche pas:
    Qu'est-ce qui ne fonctionne pas ?
    Il y a un message d'erreur ? Que dit-il ?
    La requête ne donne pas le résultat prémâché ? En effet, c'est une base pour faire le reste du calcul...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Par défaut
    je m'excuse j'ai pas fait attention quand tu m'as répondu:
    Tu pourrais partir de quelque chose comme ça :
    merci pour votre réponse, y a pas un message d 'erreur, mais pas encore arrivé à mon résultat souhaité.
    j'essaye encore de trouver une solution.
    Merci encore!

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 681
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Je suppose que la difficulté n'est pas la mise en œuvre de la fonction TIMEDIFF() mais la recherche de la ligne précédente ou suivante ?
    Auquel cas LAG et LEAD sont à utiliser

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,

    Je suppose que la difficulté n'est pas la mise en œuvre de la fonction TIMEDIFF() mais la recherche de la ligne précédente ou suivante ?
    Auquel cas LAG et LEAD sont à utiliser
    Oui la fonction TIMEDIFF est facile à utiliser, mais ce que je cherche c'est de soustraire le DEBUT HEURE de la 2eme ligne - FIN HEURE de la 1ere ligne ' et parcourir ma table d'une ligne vers la suivante en faisant la soustraction a chaque fois.

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 681
    Billets dans le blog
    10
    Par défaut
    Du coup quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select hdeb         as debut
         , hfin         as fin
         , lag(hfin, 1) 
           over(order by hdeb) as fin_prec
         , timediff(hdeb, lag(hfin, 1)
                          over(order by hdeb) as ecart
                   )
    from ma_table
    Si la différence entre les heures ne doit s'appliquer qu'à date égale, alors il faut rajouter un partitionnement sur la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select hdeb         as debut
         , hfin         as fin
         , lag(hfin, 1) 
           over(partition by dte
                order by hdeb 
               ) as fin_prec
         , timediff(hdeb, lag(hfin, 1)
                          over(partition by dte
                               order by hdeb
                              )
                   ) as ecart
    from ma_table

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2021
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2021
    Messages : 33
    Par défaut Résolu avec cette solution
    Bonjour , j'ai essayé les deux codes SQL, il fonctionnent bien et j'ai obtenu le résultat souhaité. Merci infiniment pour votre aide !!!!

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

Discussions similaires

  1. [AC-2007] Relation pls-à-pls entre valeurs d'un même champ d'une même table
    Par Capucapu dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2012, 13h25
  2. Jointure entre deux champs d'une même table
    Par oubli dans le forum Requêtes
    Réponses: 8
    Dernier message: 11/12/2007, 17h20
  3. [Requête] plusieurs champs dans une même table ayants la même source
    Par Christophe93250 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 25/04/2006, 17h18
  4. Réponses: 1
    Dernier message: 31/03/2006, 17h41
  5. synchro entre 2 forms utilisant la même table
    Par Ever dans le forum Access
    Réponses: 2
    Dernier message: 23/03/2006, 21h53

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