SQL Server Convert champ texte en Date

Résolu
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. 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
    1. 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
      1. 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
        1. 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
          1. Bonjour,

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

            A plus
            0
            1. 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