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

MySQL Discussion :

Transformer une somme de secondes en heures, minutes, secondes.


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut Transformer une somme de secondes en heures, minutes, secondes.
    Bonjour.

    Je cherche à résoudre un problème que d'autres ont eu avant moi mais je n'ai pas compris les solutions proposées.

    Le résultat que je voudrais :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT date_sorties AS jour, 
    @total_secondes := SUM(COALESCE(HHHtemps_sorties,0) + COALESCE(HHHapres_sorties,0))*3600 + SUM(COALESCE(MMtemps_sorties,0) + COALESCE(MMapres_sorties,0))*60 + SUM(COALESCE(SStemps_sorties,0)+COALESCE(SSapres_sorties,0)) AS total_secondes ,
    H AS heures,
    M AS minutes,
    S AS secondes
    FROM sorties 
    WHERE multisports_id_multisports = 1 
    Group BY jour
    ORDER BY total_secondes

    Ma derniére tentative qui ne fonctionne pas :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT date_sorties AS jour, 
    @total_secondes := SUM(COALESCE(HHHtemps_sorties,0) + COALESCE(HHHapres_sorties,0))*3600 + SUM(COALESCE(MMtemps_sorties,0) + COALESCE(MMapres_sorties,0))*60 + SUM(COALESCE(SStemps_sorties,0)+COALESCE(SSapres_sorties,0)) AS total_secondes ,
    total_secondes AS total_secondesBis,
    FLOOR (@total_secondes/3600) AS heures
    FROM sorties 
    WHERE multisports_id_multisports = 1 
    Group BY jour
    ORDER BY total_secondes

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2014
    Messages
    744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2014
    Messages : 744
    Par défaut
    Enfin, je veux dire sans faire un truc laid comme ça :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT date_sorties AS jour, 
    @total_secondes := SUM(COALESCE(HHHtemps_sorties,0) + COALESCE(HHHapres_sorties,0))*3600 + SUM(COALESCE(MMtemps_sorties,0) + COALESCE(MMapres_sorties,0))*60 + SUM(COALESCE(SStemps_sorties,0)+COALESCE(SSapres_sorties,0)) AS total_secondes , 
    FLOOR ((SUM(COALESCE(HHHtemps_sorties,0) + COALESCE(HHHapres_sorties,0))*3600 + SUM(COALESCE(MMtemps_sorties,0) + COALESCE(MMapres_sorties,0))*60 + SUM(COALESCE(SStemps_sorties,0)+COALESCE(SSapres_sorties,0)))/3600) AS heures, 
    FLOOR(MOD(SUM(COALESCE(HHHtemps_sorties,0) + COALESCE(HHHapres_sorties,0))*3600 + SUM(COALESCE(MMtemps_sorties,0) + COALESCE(MMapres_sorties,0))*60 + SUM(COALESCE(SStemps_sorties,0)+COALESCE(SSapres_sorties,0)),3600)/60) AS minutes, 
    MOD(SUM(COALESCE(HHHtemps_sorties,0) + COALESCE(HHHapres_sorties,0))*3600 + SUM(COALESCE(MMtemps_sorties,0) + COALESCE(MMapres_sorties,0))*60 + SUM(COALESCE(SStemps_sorties,0)+COALESCE(SSapres_sorties,0)),60) AS secondes
    FROM sorties 
    WHERE multisports_id_multisports = 1 
    Group BY jour 
    ORDER BY total_secondes

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 646
    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 646
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Quel est le besoin fonctionnel ?
    Communiquez un exemple de jeu de données, même simplifié, en entrée et un exemple de résultat attendu en sortie.

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 925
    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 925
    Par défaut
    Salut à tous.

    Quelque chose comme cela :
    Code mysql : 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
    select   date_sortie as jour,
             total_secondes,
             floor(    total_seconde       / 3600) as heure,
             floor(mod(total_secondes,3600)/   60) as minute,
                   mod(total_secondes,60)          as seconde
     
        from (select date_sortie,
                     SUM((COALESCE(HHHtemps_sorties,0) + 
                          COALESCE(HHHapres_sorties,0)) * 3600 +
                         (COALESCE(MMtemps_sorties, 0) +
                          COALESCE(MMapres_sorties, 0)) * 60 +
                         (COALESCE(SStemps_sorties, 0) +
                          COALESCE(SSapres_sorties, 0))) AS total_secondes
     
                from sorties
            group by date_sortie
               where multisports_id_multisports = 1
             ) as x
     
    order by total_secondes

    @+

Discussions similaires

  1. Convertir une date 0.3128 vers heures minutes
    Par ghir_ana dans le forum Développement
    Réponses: 12
    Dernier message: 28/04/2012, 20h02
  2. Réponses: 1
    Dernier message: 30/09/2008, 20h40
  3. Réponses: 3
    Dernier message: 24/09/2008, 16h23
  4. [MySQL] Calculer la somme d'une durée sous la forme Heure:Minute:Seconde
    Par radhwene dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/06/2007, 10h49
  5. Formater une durée sous la forme Heure:Minute:Seconde
    Par marsupile dans le forum C++Builder
    Réponses: 2
    Dernier message: 31/01/2004, 23h29

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