IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Probléme de conversion char vers datetime


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut Probléme de conversion char vers datetime
    Bonjours, je n'arrive pas à convertir un champ char en datetime.
    j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    La conversion d'un type de données char en datetime à données une valeur hors des limites des valeurs de date et heures.
    Mes données sont char sont au format :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    05/12/2006 11:10:55
    et ma requéte pour les convertir est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT     CONVERT(DATETIME, SUBSTRING(CONVERT(char, TUT_Date_Echeance, 103), 1, 10) + ' ' + SUBSTRING(TUT_Heure_Echeance, 1, 2) 
                          + ':' + SUBSTRING(TUT_Heure_Echeance, 2, 2) + ':' + SUBSTRING(TUT_Heure_Echeance, 4, 2), 103) AS fin ..........
    Est ce que quelqu'un aurait une idées d'ou peut provenir l'erreur?

  2. #2
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    on peut avoir des exemples de données des colonnes de ta requete:
    TUT_Heure_Echeance TUT_Date_Echeance ?

  3. #3
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    Les champ TUT_date est un datetime au format :
    05/12/2006
    Les champs TUT_Heure sont au format :
    HHMMSS => ex: 151034 qui veut dire 15h10min34s

  4. #4
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    donc pour recueillir heure, minute,seconde tu dois faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SUBSTRING(TUT_Heure_Echeance, 1, 2) + ':' + 
    SUBSTRING(TUT_Heure_Echeance, 3, 2) + ':' + 
    SUBSTRING(TUT_Heure_Echeance, 5, 2)
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SUBSTRING(TUT_Heure_Echeance, 1, 2) + ':' + 
    SUBSTRING(TUT_Heure_Echeance, 2, 2) + ':' + 
    SUBSTRING(TUT_Heure_Echeance, 4, 2)
    tu t'es mal positionné lors de tes substring

  5. #5
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    Pourtant quand je regarde les valeurs retournées par mon select elles sont correcte il me semble?

  6. #6
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    178
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 178
    Points : 40
    Points
    40
    Par défaut
    En effet je viens de tester est effectivement je n'avais pas les bonne valeurs.
    Par contre j'ai toujours une erreur de conversion quand je tout transformer en datetime.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     CONVERT(datetime, SUBSTRING(CONVERT(char, TUT_Date_Echeance, 120), 1, 10) + ' ' + SUBSTRING(TUT_Heure_Echeance, 1, 2) 
                          + ':' + SUBSTRING(TUT_Heure_Echeance, 3, 2) + ':' + SUBSTRING(TUT_Heure_Echeance, 5, 2), 103) AS fin
    C'est ce que je fais sur mon premier champ du select et quand je fais le convert du tout en datetim j'ai une erreur.
    Est ce que tu vois d'ou peut provenir l'erreur?

  7. #7
    Membre actif
    Inscrit en
    Février 2006
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 185
    Points : 224
    Points
    224
    Par défaut
    Ta requete est correcte si les valeurs sont bonnes
    donc:

    est ce que les enregistrements de la colonne TUT_Heure_Echeance ont la meme taille (6)?
    est -ce que les enregistrements de la colonne TUT_date ont la meme taille (10)?
    est ce que tu as des heures,minutes inexistantes. exemple: 250207; 281507 ?
    est ce que tu as des dates inexistantes; exemple 40/01/2007;


    cela doit forcement provenir de la

Discussions similaires

  1. Conversion CHAR vers Numérique (problème de format)
    Par wacker26 dans le forum Débutez
    Réponses: 2
    Dernier message: 23/09/2014, 10h46
  2. Problème de conversion char vers binary
    Par uuioga dans le forum PL/SQL
    Réponses: 1
    Dernier message: 01/11/2012, 08h24
  3. Problème de conversion decimal vers Hexa
    Par Elbarto dans le forum C++
    Réponses: 1
    Dernier message: 06/02/2006, 19h37
  4. [MFC] Problème de conversion CString vers Char *
    Par Darkenshin dans le forum MFC
    Réponses: 10
    Dernier message: 02/12/2005, 14h42
  5. Conversion char * vers wchar_t
    Par Zapan dans le forum C++
    Réponses: 4
    Dernier message: 24/02/2005, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo