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

SQL Oracle Discussion :

Conversion DATE format 01-janv-2013


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Par défaut Conversion DATE format 01-janv-2013
    Bonjour,
    Je cherche depuis pas mal de temps, sans résultat, de convertir une date de la forme 01-janv-13 dans un format standard du style 01/01/2013.
    Le problème est qu'avec to_date (to_date('01-janv-13', 'DD-mon-yy', 'NLS_DATE_LANGUAGE = FRENCH')), il ne reconnait pas le mois car il est en français abrégé et me met l'erreur : "Erreur SQL : ORA-01843: not a valid month".
    Merci pour vos réponses.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Les abréviations des mois français reconnues par Oracle, depuis la V10, sont les suivantes (ou l'équivalent en minuscules).
    Notez que suivant la longueur, il y a parfois un point, parfois non.
    Pour votre cas, "janv" n'est pas égal à "janv." avec un point !

    JANV.
    FÉVR.
    MARS
    AVR.
    MAI
    JUIN
    JUIL.
    AOÛT
    SEPT.
    OCT.
    NOV.
    DÉC.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Par défaut
    Je dois importer un fichier EXCEL important dans la base de données et toutes les dates sont dans ce format, elle ne présente pas de point.

    Il n'y donc pas de possibilité de conversion via le SQL*LOADER ou dans ORACLE avec des mois de la forme :
    janv
    févr
    mars
    avr
    mai
    juin
    juil
    août
    sept
    oct
    nov
    déc ?

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    A mon avis, le plus simple est de faire l'adaptation à la source, sous Excel.

    Sinon, vous pouvez créer une fonction de conversion sous Oracle, qui mettra le point quand nécessaire, et faire appel à cette fonction dans votre fichier de contrôle SQL*Loader.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Par défaut
    Oui mais le problème est que le fichier EXCEL possède pas mal de champs date et que ces même étapes devront être répéter tous les mois.

    Merci, je vais donc surement créer une fonction.

  6. #6
    Membre expérimenté Avatar de dariyoosh
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 236
    Par défaut
    Bonjour,

    Puisque vous dites:
    ... convertir une date de la forme 01-janv-13 dans un format standard du style 01/01/2013 ...
    pourquoi vous ne faites pas la conversion du format directement dans Excel? Je viens d'ouvrir une feuille Excel, dans la cellule A1, j'ai copié la valeur 01-janv-13, puis j'ai sélectionné la colonne et j'ai choisi l'option du format de cellule et dans la partie Date, j'ai choisi le format *14/03/2001 ce qui a changé immédiatement le format de 01-janv-13 au 01/01/2013.

    Une fois le changement effectué vous n'avez qu'à exporter le résultat sous forme d'un fichier .csv et injecter les données par SQL*Loader.

    Ce qui est importante pour oracle c'est que la valeur que vous insérerez soit une valeur valide désignant une date. On ne sauvegarde pas le format d'une DATE dans un objet DATE et c'est bien pour cette raison, que Oracle met à votre disposition la fonction to_char(date) justement afin de récupérer une DATE selon le format (valide) que vous souhaitez.

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

Discussions similaires

  1. Conversion date format texte en timestamp sql server 2008 R2
    Par nathantahiti dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 02/09/2011, 09h02
  2. [T-SQL ASE-12.0]Insérer dates format conversion
    Par msomso dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 09/07/2007, 13h45
  3. Conversion de format de date
    Par msurf dans le forum Langage
    Réponses: 2
    Dernier message: 22/03/2007, 11h31
  4. Conversion de format de date
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 10h39
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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