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

Développement SQL Server Discussion :

Transformer un Decimal en durée


Sujet :

Développement SQL Server

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Transformer un Decimal en durée
    Bonjour

    Je lis et relis la doc depuis ce matin, mais je trouve pas comment faire.
    Je voudrais calculer une durée de voyage en aprtant de la distance et de la vitesse (constante moyenne).

    J'obtiens le bon résultat sous forme de DECIMAL, mais je n'arrive pas à le présenter en Heure.

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DECALRE @VitesseVoyage DECIMAL
    SELECT VilleF, Distance, CONVERT(DATETIME,60 / (@VitesseVoyage / Distance),8)
    Et il me mets toujours la date avec et en plus, j'ai bien l'impression qu'il me scotche le nombre d'heure en jour.

    Je comprends pas, dans le tableau de la documentation, le format 8 ou 108 y marqué hh:mm:ss mais pas de date devant.

    Vous pouvez m'aider ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 571
    Points
    52 571
    Billets dans le blog
    5
    Par défaut
    Il faut faire cela en heure décimale. En effet le format DATETIME suppose max 24 h après c'est du jour ! Donc une autre date.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide, j'ai du mal à te suivre.
    Peut être me suis je mal exprimé, je vasi tenter une réformulation.

    Je calcule une durée en Heure avec ma formule "60 / (@VitesseVoyage / Distance". Elle est de Type DECIMAL.
    Je voudrais la présenter sous un format d'heure, par exemple 1 H 24 M 43 S

    Comment puis je faire ça ?

    Sacahnt que s'il le faut, je peux changer la formule pour avoir des secondes à la palce des heures. C'est juste que pour l'instant mon système n'est pas ISO puisque je travaille avec un vitesse en Km/H et une distance en Km. Je peux facilement passer en M/s et en M.

    Merci pour ton aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Personnellement, dans ce genre de situation dans laquelle j'ai un decimal que je dois transformer en hh:mm je fais un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert(varchar, monDecimal / 60) + 'h' + Convert(varchar, monDecimal Mod 60)
    Je n'ai donc plus une date mais une string.

    Je ne sais pas si cela est recommandé mais j'obtiens une durée au format voulu. SQLPro saura sans aucun doute dire si cela pose un problème ou si c'est une possibilité envisageable.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Donc si je veux aller juqu'à la seconde je dois faire une truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Convert(varchar, monDecimal / 60) + 'h' + Convert(varchar, monDecimal Mod 60) + 'm' + Convert(varchar, monDecimal Mod 3600) + 's'
    Ouaip, j'aurais bien aimé un truc moins "bricolage", mais si je n'ai que ça, je m'en contenterais.
    SQLPro, tu confirme ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

Discussions similaires

  1. Transformer un decimal en lettres
    Par messi1987 dans le forum Développement
    Réponses: 2
    Dernier message: 24/09/2014, 20h52
  2. [XL-2013] Transformer jour ouvré en durée calendrier
    Par dmoluc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/06/2013, 12h12
  3. Réponses: 21
    Dernier message: 30/03/2009, 00h00
  4. [XSLT] 1.0 : transformation decimal
    Par vinh14 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 16/12/2008, 12h09
  5. Réponses: 2
    Dernier message: 21/09/2006, 11h28

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