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 :

problème avec convert et stuff


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut problème avec convert et stuff
    Bonjour

    J'ai un soucis avec cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select S.server_id as nserveur, S.last_outcome_message as message,J.name,  convert( datetime, convert( varchar , last_run_date ), 112) + convert( datetime, stuff( stuff( replicate ('0', 6 - len(convert(varchar, last_run_time )) ) + convert(varchar, last_run_time ),3, 0 , ':') , 6, 0 , ':' ) , 108) date_heure_derniere_execution, convert( varchar,stuff( stuff( replicate ('0', 6 - len (convert(varchar,last_run_duration )) ) + convert(varchar, last_run_duration ), 3, 0 , ':') , 6, 0 , ':' ) , 108) duree 
                             from sysjobservers S
                            inner join sysjobs J on J.job_id = S.job_id"_&
                                                                                  where S.last_run_outcome <>1
    Je travaille sous sqlserver 2005 J'interroge la base de données système msdb donc vous pouvez la tester sous sqlserveur.
    Mon problème se situe dans la ligne du select au niveau des convert. Les champs "last_run_date" , "last_run_time" et "last_run_duration" correspondent à des dates ou des durées. Par exemple pour aujourd'hui (11/04/2011):
    last_run_date aura pour valeur 11020411.

    J'utilise des convert et des stuff pour que la date soit affichée comme cela 11-04-2011, mais ça ne fonctionne pas. Il y a peut être un autre moyen?

  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
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Que donne ceci :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    SELECT 
    	S.server_id AS nserveur, 
    	S.last_outcome_message AS message,
    	J.name,  
    	DATEADD(
    		SECOND,
    		(Last_run_time % 10000) % 100,
    		DATEADD(
    			MINUTE,
    			(Last_run_time % 10000) / 100, 
    			DATEADD(
    				HOUR, 
    				Last_run_time / 10000, 
    				CAST(
    					CAST(
    						last_run_date 
    						AS VARCHAR(8)
    					) 
    				AS DATETIME
    				)
    			)
    		)
    	)AS date_heure_derniere_execution, 
    	CASE 
    		WHEN last_run_duration / 10000 < 10 
    			THEN '0' 
    		ELSE '' 
    	END 
    	+ CAST(
    		last_run_duration / 10000 
    		AS VARCHAR(10)
    	) 
    	+ ':' 
    	+ RIGHT(
    		'0'
    		+ CAST(
    			(last_run_duration % 10000) / 100 
    			AS VARCHAR(10)
    		)
    		, 2
    	) 
    	+ ':' 
    	+ RIGHT(
    		'0' 
    		+ CAST(
    			(last_run_duration % 10000) % 100 
    			AS VARCHAR(10)
    		)
    		,2
    	) AS duree
    FROM sysjobservers S
    INNER JOIN sysjobs J ON J.job_id = S.job_id

    Quel est le but de la requête ? si vous le pouvez, effectuez cette "transformation" dans le programme d'affichage...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Cette requête permet de récupérer des informations sur les lot DTS qui sont en erreur ou annulés.

    Un lot DTS est une option de sqlserver 2005 qui permet d'importer et transformer des données entre plusieurs sources de données.
    Par exemple remplir une table à partir d'un fichier excel.

    Les tables que j'interroge sont un récapitulatif des erreurs engendrées par le dysfonctionnement de différents lots. Suite à cette requête un mail sera envoyé pour prévenir l'utilisateur que son lot ne fonctionne pas.

    J'espère avoir été claire dans l'explication sinon n'hésite pas a me poser des questions.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Ça marche merci

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

Discussions similaires

  1. Problème avec Convert.ToChar
    Par sfaxien dans le forum C#
    Réponses: 5
    Dernier message: 24/11/2009, 10h26
  2. Problème avec convert datetime
    Par sane79 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/07/2007, 10h43
  3. Problème avec un Convert
    Par elfye dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/02/2007, 13h42
  4. Réponses: 2
    Dernier message: 18/11/2006, 15h06
  5. Problème de conversion avec CONVERT
    Par gowser dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/12/2005, 16h48

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