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

Langage SQL Discussion :

Conversion Heure 0,5 en 0h30min


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 29
    Points
    29
    Par défaut Conversion Heure 0,5 en 0h30min
    Bonjour,

    Mon problème est dans le titre du message.
    Dans une requête, j'obtiens une durée en heures et en 100emes d'heures (Ex: 2h30min devient 2,5) , et je voudrais obtenir un affichage en format classique (HH:MIN ou xH yMin)

    Voici le select de ma requête actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CONTACTFICHE.C_NOM AS Raison_Sociale, CONTACTFICHE.C_PRENOM AS Nom_Depot, HISTORIQUE.H_TYPEACTION, LISTETYPEACTION.LTA_NOM, (SUM(H_DUREEREELLE)*24) as Duree_En_Heures
         FROM CONTACTFICHE, HISTORIQUE, LISTETYPEACTION
    La durée est stockée dans le champ H_DUREEREELLE et est multiplié par 24 car stocké en 24eme d'heure (ne me demandez pas pourquoi...)

    Merci pour votre aide

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Multiplier la partie décimale par 60 ?

    partie_entiere(h) => heure
    (h - partie_entiere(h)) * 60 => minutes

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta rapidité Pacmann.

    Question sans doute bete...quelle fonction dois-je utiliser pour extraire la partie entière?

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Ca dépend de ton SGBD.

    Cela dit, le plus important quand ta question concerne une fonction, c'est de chercher !

    Dans google, tu tapes "sql partie entière oracle" par exemple.
    Et tu t'aperçois que c'est trunc(tonnombre)


  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    c'est du FireBird apparemment (base en .gdb)

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    j'ai surfé, j'ai cherché, je n'ai pas trouvé...

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Essayez ROUND ou FLOOR qu'on croise souvent dans beaucoup de langages.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    J'ai essayé déjà mais la console InterBase de Borland que j'utilise ne semble pas les reconnaître...

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    Voici des UDF développez pour MS SQL Server. Transposez les en IB :
    http://sqlpro.developpez.com/cours/sqlserver/udf/
    FN_CONVERT_HMS_HD
    FN_CONVERT_HD_HMS

    A +

  10. #10
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Ouah, c'est vrai que c'est pas gagné...
    Je viens pas pour donner une solution, mais parce qu'après avoir cherché un peu, je craque.

    Interbase, c'est le seul SGBD de l'univers qui n'est absolument pas documenté sur le net ???

    Sérieusement, j'espère que vous ne payez pas ce truc...
    Et même si c'est gratuit, jetez le quand même pour prendre MySQL par exemple.

    Enfin, pour tenter quand même de faire avancer la chose :
    Tu peux tester :
    CAST(h AS INTEGER)

    Ca a de bonnes chances de faire l'arrondi. Si tel est le cas, tu peux faire :
    CAST(h * 60 AS INTEGER) pour avoir le tout en minutes.

    Après cela, si tu trouves la fonction modulo, tu peux encore y arriver.
    Tente a % b, ou encore mod(a, b).

    mod(CAST(h * 60 AS INTEGER), 60) => les minutes
    (CAST(h * 60 AS INTEGER), 60) - mod(CAST(h * 60 AS INTEGER), 60)) / 60 => les heures

  11. #11
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Une petite chose au passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM CONTACTFICHE, HISTORIQUE, LISTETYPEACTION
    Sans condition de jointure derrière, ça fait le produit cartésien des trois tables. J'espère pour toi qu'elles ne sont pas trop grosses !

    Et au passage, je rappelle que la syntaxe normalisée depuis 1992 pour les jointures est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FROM tableA
    JOIN tableB ON condition de jointure
    Pour plus d'infos sur les jointures, voir cet article de SQLPro.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    Merci Pacmann pour le tuyau avec cast, j'ai réussi à combiner ça avec la réponse d'un autre post dans le forum dédié à Firebird pour obtenir ceci (et ça fonctionne )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cast(((SUM((H_DUREEREELLE)*24))-0.5)as integer)as NB_Heures,cast((((SUM((H_DUREEREELLE)*24))-cast(((SUM((H_DUREEREELLE)*24))-0.5)as integer))*60)as integer) as Nb_Min
    Cinephil, les jointures sont bien réaliseés, je ne les avais pas mises dans le post pour ne pas alourdir inutilement mais merci de ton attention.

    Ce post est donc résolu

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

Discussions similaires

  1. conversion heures/dates => écart
    Par lbar012001 dans le forum Access
    Réponses: 4
    Dernier message: 17/04/2007, 15h01
  2. [Dates] Conversion heure GMT vers heure local
    Par ggjedi dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2006, 10h17
  3. vba excel pb conversion heure
    Par DirtyA:ex dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 22/06/2006, 17h06
  4. Conversion heures minutes en heures centièmes
    Par shaman262 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 24/10/2005, 17h53
  5. [MsSQL 2000]Conversion heure GMT
    Par prophetky dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/08/2005, 17h27

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