SQL Server Convert champ texte en Date

Résolu
soleil_levant Messages postés 426 Statut Membre -  
soleil_levant Messages postés 426 Statut Membre -
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
Configuration: Windows XP
Firefox 3.0.3

6 réponses

  1. soleil_levant Messages postés 426 Statut Membre 32
     
    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
  2. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    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
  3. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    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
  4. soleil_levant Messages postés 426 Statut Membre 32
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Christounet Messages postés 1272 Date d'inscription   Statut Membre Dernière intervention   1 393
     
    Bonjour,

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

    A plus
    0
  7. soleil_levant Messages postés 426 Statut Membre 32
     
    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