SQL Server Convert champ texte en Date [Résolu/Fermé]

Signaler
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
-
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
-
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

Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
31
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 88731 internautes nous ont dit merci ce mois-ci

Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 268
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
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 268
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
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
31
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
Messages postés
1263
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 268
Bonjour,

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

A plus
Messages postés
393
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
14 avril 2011
31
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