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

Développement SQL Server Discussion :

Erreur conversion de date


Sujet :

Développement SQL Server

  1. #1
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Erreur conversion de date
    Bonjour,

    J'importe les données de fichiers par BULK insert dans une seule colonne, je les sépares ensuite avec un SUBSTRING dans une table.

    Dans mes fichiers se trouve la date écris de cette façon '301020' soit JJMMYY

    Quand j'essaye de le convertir pour qu'il soit inséré de cette façon '2020-10-30 00:00:00.000', je constate que finalement la date est incohérente avec le résultat que je voudrais car il me défini le jour comme étant l'année ... : '2030-10-20 00:00:00.000'

    Comment pourrai-je résoudre cette erreur ?

    Voici mon code :
    REPLACE(CONVERT(VARCHAR,(SUBSTRING(Ligne,38,2)),5)+ CONVERT(VARCHAR,(SUBSTRING(Ligne,40,2)),5) + CONVERT(VARCHAR,(SUBSTRING(Ligne,42,2)),5),'','-') AS DateStatut
    Merci

  2. #2
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Bonjour,

    Essaie ce bout de code :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATEFROMPARTS(RIGHT('DDMMYY', 2) + 2000, SUBSTRING('DDMMYY', 3, 2), LEFT('DDMMYY', 2))
    Code parrain certification Voltaire : NTMPH759

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    merci pour votre réponse, j'ai essayé mais cela me retourne le message suivant :

    Msg*195, Niveau*15, État*10, Ligne*172
    'DATEFROMPARTS' n'est pas une option nom de fonction intégrée reconnue.
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Mbale57 Voir le message
    'DATEFROMPARTS' n'est pas une option nom de fonction intégrée reconnue.
    C'est quoi votre version de bd ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Janvier 2019
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Janvier 2019
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    ma version est :

    Microsoft SQL Server 2008 (SP4) - 10.0.6000.29 (X64) Sep 3 2014 04:11:34 Copyright (c) 1988-2008 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (VM)

  6. #6
    Membre éclairé
    Avatar de Wachter
    Homme Profil pro
    Développeur
    Inscrit en
    Octobre 2008
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 404
    Points : 734
    Points
    734
    Par défaut
    Vu que la fonction DATEFROMPARTS n'est pas compatible avec la version de ton SGBD, tu peux tester ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST('20' + RIGHT('301120', 2) + SUBSTRING('301120', 3, 2) + LEFT('301120', 2) AS date)
    Code parrain certification Voltaire : NTMPH759

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ou sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select convert (datetime2, stuff(stuff('301020', 5, 0, '/'), 3, 0, '/'), 3)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. FB erreur conversion chaine --> date
    Par Just-Soft dans le forum Bases de données
    Réponses: 13
    Dernier message: 28/03/2011, 11h44
  2. erreur lors de conversion des dates
    Par steph_arrow dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/06/2010, 21h33
  3. erreur lors de la conversion Integer <=> date
    Par dirty_harry dans le forum SQL
    Réponses: 7
    Dernier message: 18/01/2010, 18h22
  4. Erreur de conversion si date manquante
    Par Orakle dans le forum Sql Developer
    Réponses: 7
    Dernier message: 29/08/2007, 11h19
  5. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31

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