SQL Server Convert champ texte en Date

Résolu/Fermé
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
- 24 juil. 2009 à 11:19
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
- 24 juil. 2009 à 13:28
Bonjour,
J'ai un gros problème avec la fonction de SQL Server CONVERT! J'ai un champ de type Texte à caracter contenant une date genre 23072009. Je souhaite le convertir en 23/07/2009 ou autre format mais qui soit Date connaissabel par mes procédures par la suite.
Voici ma sytaxe : select ..., CONVERT(DateTime, BIRTHDATE) As [Date de Naissance] from...

Voici l'erreur de Mon éditeur de Base:
Error 24/07/2009 11:04:24 0:00:00.124 SQL Server Database Error: The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. 2 0

Quelqu'un a une solution
Merci beaucoup

6 réponses

soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
32
24 juil. 2009 à 13:28
HOURRAA!!

C'est du tonnerre ça marche nikel!! Christounet tu es LE MEILLEUR!! Vraiment super ta commande substring, (moi je connaissais que mid() de VB) super sujet résolut :D

MErci
2
Christounet
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 374
24 juil. 2009 à 12:33
Bonjour,

Alors l'instruction left(nomcolonne,x) permet de prendre les x premiers caractères d'une colonne à partir de la gauche, donc dans mon exemple les 8 premiers caractères de la colonne BIRTHDATE. Tu as peut-être raison concernant le type de date de SQL server et le type de date de ta colonne.On peut peut-être essayer avec le format ISO (112)
select ..., CONVERT(Datetime,SUBSTRING(BIRTHDATE,5,4)+SUBSTRING(BIRTHDATE,3,2)+LEFT(BIRTHDATE,2),112)
As [Date de Naissance] from...

Donc, ici je prends d'abord l'année (à partir du 5ème caractère sur une longueur de 4), ensuite le mois (3ème et 4ème) et enfin le jour (les 2 premiers), donc dans ton exemple 19840125.
A plus
1
Christounet
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 374
24 juil. 2009 à 11:39
Bonjour,

Je pense que tu dois indiquer le type de date en format d'entrée, peux-tu essayer
select ..., CONVERT(DateTime, BIRTHDATE,113) As [Date de Naissance] from...

A plus
0
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
32
24 juil. 2009 à 11:46
Merci pour ta prompte réponse,
j'ai déja pensé à ça en mettant 120, tjrs la même erreur :(

PS: ma requête tape d'une Vue dont la colonne BIRTHDATE est varchar(100)
Est ce que c'est de la d'ou viens le prob??

Merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Christounet
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 374
24 juil. 2009 à 11:56
Bonjour,

Peut-être, essaye alors ce code
select ..., CONVERT(DateTime,left(BIRTHDATE,8),113) As [Date de Naissance] from...

A plus
0
soleil_levant
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
32
24 juil. 2009 à 12:15
Tjrs la meme erreur :(
que signifie ton chiffre 8? Tu fais un left pour mettre le colonne birthdate completement à gauche?
PS: Voici une enregistrement quelconque de ma base correspondant le champs BIRTHDATE : 25011984
Pense tu que le problème cé les dates en anglais de SQL Server et les dates en france??

Merci
0