Bonjour à tous.
Un problème, que je pense connu, mais sur lequel je ne parviens pas à trouver une réponse satisfaisante :
je souhaite convertir un Varchar en Date, cependant mon varchar peut contenir à peu près n'importe quoi...
Dans la FAQ on trouve :
Mais ceci donne chez moi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DECLARE @datestring varchar(8) SET @datestring = '12/21/98' SELECT case when convert(datetime, @datestring) then 'date correcte' else 'Date invalide' end Test_Date
Pourquoi ????
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >[Error] Script lines: 1-3 -------------------------- Incorrect syntax near 'then'. Msg: 102, Level: 15, State: 181 Server: DBTR1, Line: 3
Autre piste :
me renvoie bien 'Invalide' (pas de 32 Janvier)Set arithabort arith_overflow off
Declare @vc varchar(15), @dt datetime
select @vc = '20133201'
select @dt = convert (date , @vc)
select case @dt when null then 'invalide' else 'valide' end
mais le même test avec des caractères...
retourne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Set arithabort arith_overflow off Declare @vc varchar(15), @dt datetime select @vc = '2013AA01' select @dt = convert (date , @vc) select case @dt when null then 'invalide' else 'valide' end
Tout ceci étant dans une procédure qui boucle sur des lignes de données j'aimerai "ignorer" les lignes syntaxiquement incorrectes sans planter lamentablement ma procédure à la première erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 >[Error] Script lines: 1-5 -------------------------- Syntax error during explicit conversion of VARCHAR value '2013AA01' to a DATE field. Msg: 249, Level: 16, State: 1 Server: DBTR1, Line: 4
Des idées ?
Merci d'avance
Partager