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 :

Help pour convertir un nombre de minutes en HH:MM


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 3
    Par défaut Help pour convertir un nombre de minutes en HH:MM
    Bonjour à tous,

    étant un débutant sous sql. Je cherche à convertir un nombre de minutes en HH:MM.

    Ex : 20 devient 00:20
    Ex : 2582 devient 43:02

    Merci de votre aide.

    Bonne fin de journée

    jejeadsl

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 622
    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 622
    Billets dans le blog
    10
    Par défaut
    Je ne crois pas qu'il y ait directement une fonction heure, mais vous pouvez faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT                                             
           CASE WHEN INT(2582/60)<10                   
                THEN '0'!!CHAR(INT(2582/60))           
                ELSE CHAR(INT(2582/60))                
           END                                         
          ,CASE WHEN 2582-(INT(2582/60)*60) < 10       
                THEN '0'!!CHAR(2582-(INT(2582/60)*60)) 
                ELSE                                   
                     CHAR(2582-(INT(2582/60)*60))      
                END
    Reste à concaténer le tout pour avoir une seule colonne si besoin

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 622
    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 622
    Billets dans le blog
    10
    Par défaut
    En utilisant une CTE ca donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        WITH TMP AS                                          
       (SELECT                                               
               CASE WHEN TRUNC(2582/60)<10                     
                    THEN '0'!!CHAR(TRUNC(2582/60))             
                    ELSE CHAR(TRUNC(2582/60))                  
               END AS XHH                                    
              ,CASE WHEN 2582-(TRUNC(2582/60)*60) < 10         
                    THEN '0'!!CHAR(2582-(TRUNC(2582/60)*60))   
                    ELSE                                     
                         CHAR(2582-(TRUNC(2582/60)*60))        
                    END AS XMM)                               
        SELECT RTRIM(XHH) !! ':' !! XMM FROM TMP   
        ;

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    escartefigue tu te crois sur PostGreSQL ???

    Solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WITH 
     T AS (SELECT 2582 AS C),
    HM AS (SELECT C / 60 AS H, C % 60 AS M 
           FROM  T)
    SELECT CASE WHEN H < 10 THEN '0' ELSE '' END + CAST(H AS VARCHAR(2)) + ':' +
           CASE WHEN M < 10 THEN '0' ELSE '' END + CAST(M AS VARCHAR(2))
    FROM   HM
    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/ * * * * *

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 44
    Par défaut
    Bonjour,

    y a t'il un interet particulier a utiliser une cte pour cette requete ?

    personnellement j'ai également pensé au modulo et ferait comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    declare @m as integer=2582
     
    SELECT cast(@m/60 as varchar(8))+':'+left('0'+cast(@m%60 as char(2)),2) AS C

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    C'est juste un problème de clarté, ça n'est pas plus ni moins rapide !

    Dans ta requête tu as oublié que les heures peuvent avoir des zéro devant apparemment.

    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/ * * * * *

Discussions similaires

  1. [Toutes versions] Questions pour convertir des nombres stockés en format texte
    Par antoisse3 dans le forum Excel
    Réponses: 7
    Dernier message: 20/04/2015, 09h55
  2. Requête pour calculer le nombre de minutes
    Par Baleze dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/12/2012, 11h24
  3. Algo pour convertir un nombre binaire en décimal
    Par Eole92 dans le forum Général Python
    Réponses: 12
    Dernier message: 13/11/2011, 12h32
  4. Fonction personnalisé pour convertir des secondes en Minutes:Secondes
    Par kurul1 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 10/01/2011, 22h26
  5. convertir des jours heures minutes en nombre décimal
    Par Menez express dans le forum Excel
    Réponses: 2
    Dernier message: 26/09/2008, 18h10

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