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 :

Secondes en heure et minute


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut Secondes en heure et minute
    Bonsoir,

    Je me permet de vous demander de l'aide.

    Je vous explique:

    J'ai une table qui comporte des données en seconde

    Je voudrais avec une requête les avoirs en heures et minutes

    ex: 27050 sec = 7h30

    J'ai essayer avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Heures: Somme((Int([Champ1]/3600)+([Champ1] Mod 60)/60)/24)
    Mais j'obtiens 07:50:00 et moi je veux 07:30:00.

    Merci de votre aide.

    Cordialement,

    Vincent

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    Voici un exemple de requête pour sommer des secondes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TimeSerial(0,0, Sum([Champ1])) AS TotalTemps,
           Hour(TimeSerial(0,0, Sum([Champ1]))) AS Heures,
           Minute(TimeSerial(0,0, Sum([Champ1]))) AS Minutes,
           Second(TimeSerial(0,0, Sum([Champ1]))) AS Secondes
    FROM tblTest;
    Détail des colonnes en affichage mode création de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TotalTemps: SérieHeure(0;0;Somme([Champ1]))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Heures: Heure(SérieHeure(0;0;Somme([Champ1])))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Minutes: Minute(SérieHeure(0;0;Somme([Champ1])))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Secondes: Seconde(SérieHeure(0;0;Somme([Champ1])))
    A+

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonjour

    Merci LedZeppII pour tes réponses, cela fonctionne parfaitement le seul soucis c'est que je ne peux pas dépasser 09:00:00 après sa me met "erreur".

    J'aimerais qu'il n'y est pas de limite, par exemple 30:00:00 ou même 100:00:00

    Cordialement,

    Vincent.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    L'erreur vient d'un dépassement de capacité (Integer) dans la fonction TimeSerial.
    On peut contourner en faisant la somme des TimeSerial au lieu de faire le TimeSerial de la somme.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TimeSerial(0,0,0) + Sum(TimeSerial(0,0,[Champ1])) AS TotalTemps, 
           DateDiff("h", TimeSerial(0,0,0) ,Sum(TimeSerial(0,0,[Champ1]))) AS Heures, 
           Minute(Sum(TimeSerial(0,0,[Champ1]))) AS Minutes, 
           Second(Sum(TimeSerial(0,0,[Champ1]))) AS Secondes
    FROM tblTest
    Remarque: Pour dépasser 23H, j'utilise DateDiff à la place de Hour.

    A+

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    Merci. Je vais essayer et tiens au courant.

    Cordialement,

    Vincent.

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Je viens de faire le test et sa ne marche pas. Cela me marque "erreur" et dépassement de capacité.

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    [Champ1] a des valeurs supérieures à 32767 ?

    Tu peux essayer avec DateAdd :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DateAdd("s", Sum([Champ1]), 0) AS TotalTemps, 
           DateDiff("h", TimeSerial(0,0,0), DateAdd("s",Sum([Champ1]),0)) AS Heures, 
           Minute(DateAdd("s", Sum([Champ1]), 0)) AS Minutes, 
           Second(DateAdd("s", Sum([Champ1]), 0)) AS Secondes
    FROM tblTest
    A+

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 910
    Points : 4 808
    Points
    4 808
    Par défaut
    Bonjour Vins86 et LedzepII

    Bien sûr la requete de LedZepII marche coorectement mais je propose plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Int(sum(Champ1)/3600) as Heures, 
     Int(sum(Champ1)/60) - Heures*60 as Minutes,  
    sum(Champ1) - Heures*60*60 - Minutes*60  from TblTest
    Bonne journée

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonsoir,

    Je vous remerci de vos réponses. Je vais essayer çà de suite.

    Cordialement,

    Vincent.

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    [Champ1] a des valeurs supérieures à 32767 ?

    Tu peux essayer avec DateAdd :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DateAdd("s", Sum([Champ1]), 0) AS TotalTemps, 
           DateDiff("h", TimeSerial(0,0,0), DateAdd("s",Sum([Champ1]),0)) AS Heures, 
           Minute(DateAdd("s", Sum([Champ1]), 0)) AS Minutes, 
           Second(DateAdd("s", Sum([Champ1]), 0)) AS Secondes
    FROM tblTest
    A+
    Merci pour ta réponse. Mais quand je fais 324000 sec. J'obtiens 18:00:00. Alors que je devrais avoir 90:00:00 dans le champ "TotalTemps"

    Cordialement.

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Citation Envoyé par micniv Voir le message
    Bonjour Vins86 et LedzepII

    Bien sûr la requete de LedZepII marche coorectement mais je propose plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Int(sum(Champ1)/3600) as Heures, 
     Int(sum(Champ1)/60) - Heures*60 as Minutes,  
    sum(Champ1) - Heures*60*60 - Minutes*60  from TblTest
    Bonne journée

    Sa marche niquel, Comme LedZeppII, est-ce possible d'avoir un seul champ et pas 2?

    Cordialement,

    Vincent

  12. #12
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 910
    Points : 4 808
    Points
    4 808
    Par défaut
    Tu exagères presque ! Non je rigole
    Il suffit de concaténer les champs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Int(Sum(Champ1)/3600) AS Heures, Int(Sum(Champ1)/60)-Heures*60 AS Minutes,
     Sum(Champ1)-Heures*60*60-Minutes*60 AS Secondes, 
    Heures & "H " & Minutes & "' " & secondes & "'' " AS DureeTotale
    FROM TblTest;
    Bonne suite

  13. #13
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonsoir,

    Merci sa marche niquel. On peut retirer les 3 champs et garder que le total sans faire "masquer"?

    Cordialement,

    Vincent.

  14. #14
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut les z'amis : micniv, LedZeppII et salut vins86,

    permettez que je m'amuse avec vous? ^^
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select delai, format(delai\3600,"0") & ":" & format((delai mod 3600)\60,"00") & ":" & format(delai mod 60,"00") as elapsed  from duree

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Salut micniv, LedZeppII et vodiem.

    Cela fonctionne parfaitement.

    Merci à vous tous.

    Mais j'ai un autre soucis, j'ai un requête qui à 3 champs: Produits, heures (Nbre) et Heure (heures) avec la formule de vodiem.

    J'ai fait une expression qui me calcule le nombre de produits réalisé par heure en fontion d'heures réalisés.

    Exemple:
    Si j'ai fait 10 produits en 1 heures, ça donne: 10 produits/ heure
    Si j'ai fait 10 produits en 2 heures, çà donne: 5 produits/ heure
    Etc...

    En faisant avec la formule là:
    Produits heures: [Produits]/[Heure (heures)]
    J'obtiens #Erreur.

    Cordialement,

    Vincent.

  16. #16
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour à tous,

    Vins86, ton champ [Heure (heures)] est de type texte.
    Si le champ [Heure (heures)] de ta requête sert à obtenir un nombre d'heures à partir d'un nombre de secondes, utilise une expression dont le résultat est numérique.
    Si j'ai fait 5 produits en 1800 sec.
    J'ai fait 5 produits en 1800/3600 heure (soit 0.5 heure).
    Donc j'ai produit à une cadence de 5/0.5=10 produits à l'heure.

    En résumé:
    Cadence = [Nbre de produits créés] * 3600 / [Nbre de secondes pour créer les produits]

    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/06/2008, 14h34
  2. Réponses: 3
    Dernier message: 15/04/2008, 08h27
  3. Des heures, des minutes et des secondes!
    Par Flaguette dans le forum Excel
    Réponses: 7
    Dernier message: 19/09/2007, 02h55
  4. Conversion secondes en heure-minute
    Par clo85 dans le forum MATLAB
    Réponses: 5
    Dernier message: 10/07/2007, 08h13
  5. Fixer l'heure, les minutes et les secondes d'une date
    Par pyxosledisciple dans le forum Access
    Réponses: 2
    Dernier message: 22/02/2006, 08h02

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