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 :

Ajouter 1900 ou 2000 à l'année indiquée sur 2 digits [11gR2]


Sujet :

SQL Oracle

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut Ajouter 1900 ou 2000 à l'année indiquée sur 2 digits
    Bonjour,

    je fais actuellement des exports de tables dans des fichiers CSV (exploités par un prestataire externe). Il y a des dates dans ces tables qui sont au format dd/mm/yy alors que je dois les exporter au format dd/mm/yyyy. Je ne peux pas changer le formatage des dates dans les tables.
    Là où se pose le problème c'est pour l'année qui est stockée sur 2 digits alors qu'il me la faut sur 4. Par exemple :
    SELECT to_date(DAT_DEBUT,'dd/mm/yyyy') FROM TABLE
    me renvoie bien sûr 0014 ou 0099 pour l'année alors que je voudrais 2014 ou 1999. Avez-vous la solution svp ?

    Merci.

    PS : je crois que j'aurais besoin d'aide par la suite pour une date NULL, j'ai beau utiliser la fonction NRV, je ne m'en sors pas.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Essayez avec dd/mm/rr. La zone dat_debut est de type varchar2 n'est pas vrai ?

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Je vais essayer ça et oui c'est du varchar2, vraiment naze de la part de l'éditeur de mettre du varchar2 pour une date je trouve ou alors c'est eut-être historique des versions précédentes.

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Merci mnitu. J'ai suivi ce que tu as dit cependant il me manquait un alter session que j'ai trouvé ici.

    alter session set nls_date_format='dd/mm/yyyy';
    SELECT to_date(DAT_DEBUT,'dd/mm/rr') FROM TABLE ;

  5. #5
    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
    L'alter session n'est pas nécessaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT to_char(to_date(DAT_DEBUT,'dd/mm/rr'), 'dd/mm/yyyy')
      FROM TABLE;
    Mais ça c'est juste pour regarder les données comme vous le voulez.
    Pour la conversion le to_date suffit.

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Points : 210
    Points
    210
    Par défaut
    Merci pour cette précision mais vu que je fais plusieurs extractions dans différents fichier le alter session va m'économiser des caractères copiés/collés

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 14/04/2006, 18h38
  2. [SQL-SERVER 2000] Problème de requête sur une seule ligne
    Par Sytchev3 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/04/2006, 16h54
  3. [Oracle] Date(oracle) => Année saisie sur 4 jours, retournée sur 2
    Par romulus dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/03/2006, 03h14
  4. SQLServer 2000: Liste des contraintes sur une colonne ?
    Par swirtel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/11/2005, 16h13
  5. SQLserveur-2000 Sauvegarde 10 Tables sur 200 ?
    Par troxsa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/09/2005, 10h04

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