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

MS SQL Server Discussion :

conversion durée sql serveur 2005


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut conversion durée sql serveur 2005
    Bonjour, dans le cadre de mon stage, je dois faire une requete qui calcule la durée entre deux dates et exprimer cette durée en jj/mm/aa hh:min:secondes
    grace à datediff je calcule cette durée en secondes, mais je n'arrive pas à convertir cette durée au format souhaité.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select requete.id_req,datediff(day ,requete.creation_date,requete.reception_date)as jours,
    (datediff(hour ,requete.creation_date,requete.reception_date)-datediff(day ,requete.creation_date,requete.reception_date)*24)as heure,
    (datediff(minute ,requete.creation_date,requete.reception_date)-datediff(hour ,requete.creation_date,requete.reception_date)*60) as minutes,
    (datediff(second ,requete.creation_date,requete.reception_date)-datediff(minute ,requete.creation_date,requete.reception_date)*60) as secondes
    from requete;
    cette requête m'affiche le résultat souhaité, mais dans 4 colonnes, je ne peux donc pas le récupérer.. merci d'avance.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Non, votre requête est fausse :
    Voyez par exemple ce que ça donnera avec ces dates : '2014-03-02T23:00:00' et '2014-03-03T01:00:00'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    jours	heure	minutes	secondes
    1	-22	0	0
    Attention aux "arrondi" avec les fonctions date comme DATEDIFF.

    Ce type de formatage concernant plutôt l'affichage, il serait préférable de récupérer la différence en secondes, et d’effectuer le formatage dans votre code client.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut
    merci de votre réponse, c'est la question que je me pose, étant donné qu'ensuite je vais extraire les resultats pour alimenter un magasin grace à SSIS, il est donc plus judicieux de tout garder au format seconde et de convertir une fois en VB?
    merci.

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par arlato Voir le message
    il est donc plus judicieux de tout garder au format seconde et de convertir une fois en VB?
    Oui. Il me semble que ce sera plus simple... (vous pourriez néamoins perdre la précision sur la seconde, si cela pose problème, renvoyez la différence en millisecondes, ou directement les deux dates).

    Ce sera en plus réutilisable, et votre requête sera plus lisible, car en SQL ça donne quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT CAST(DATEDIFF(SECOND, creation_date, reception_date)/(60*60*24) AS VARCHAR(2)) 
    	+ 'j '
    	+ LEFT('0' + CAST(DATEDIFF(SECOND, creation_date, reception_date)/(60*60) % 24 AS VARCHAR(2)), 2)
    	+ ':'
    	+ LEFT('0' + CAST(DATEDIFF(SECOND, creation_date, reception_date)/60 % 60 AS VARCHAR(2)), 2)
    	+':' + LEFT('0' + CAST(DATEDIFF(SECOND, creation_date, reception_date) % 60 AS VARCHAR(2)), 2)
            AS Dif
    FROM ...
    (l'idéal dans ce cas, serait de créer une fonction, et l'utiliser dans la requete...)

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 5
    Par défaut
    je reglerai donc ça en VB.net avec quelques mod.. Merci

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

Discussions similaires

  1. [sql serveur 2005] Conversion d'un montant en lettre (continuité)
    Par amine_co2 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/11/2009, 10h06
  2. Importer un fichier XML avec SQL serveur 2005
    Par thomasesteve dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 10/03/2006, 11h26
  3. Problème avec l'import DTS SQL Serveur 2005
    Par dlan dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/03/2006, 11h47

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