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

SAS Base Discussion :

Date venant de oracle a reconvertir


Sujet :

SAS Base

  1. #1
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut Date venant de oracle a reconvertir
    Bonjour,

    J'ai des données dates venant de oracle que je dois traiter. Le problème est le suivant . SAS me retourne des formats aberrants ... du genre " * " ou encore " ******* " ou encore " . " sinon la date reste dans un format numérique malgré le forcage d'affichage dans un " format= " ou " informat= " .

    Par exemple une table de ma base oracle que SAS m'affiche donne 1820361600 au lieu du 07/09/2017 .

    Si je fais :

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    libname mabdd meta library="base de donnees oracle duchmolle";
     
    proc sql;
     
    create table table_sortie as 
     
    select matable.champtext , matable.format = datetime. as new_date 
    from mabbb.matable ;
     
    run;

    Le " matable.format = datetime. as new_date " est le seul cas ou " datetime. " affiche une date du style " 07SEP1700:00:00 " . Si j'utilise du YYMMDDw. , du YYMMDD10. , du date9. , du datew. ... j'ai un chiffre " 1820361600 " ou alors un point ou encore des petites étoilés . Pire encore les instructions SQL month() ; day() , year() , datepart() me plante la requête ...

    Quelle instruction dois je utiliser pour avoir un affichage cohérent ?

    Merci d'avance

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Bonjour,

    J'ai effectué un test simple avec ce code SAS :

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    proc sql inobs=1;
      create table table_exit as
        select mytable.<name of your date field> as new_date
          from mydb.mytable;
    run;

    J'ai bien une date au format SAS à l'affichage et non plus un nombre numérique.

    Des exemples pour convertir vos dates

    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    proc sql;
     
    /* reussir a obtenir la concatenation d'un nombre de colonne variable */
     
    create table sortie as
     
    select distinct matable1.champ1 , matable1.champ2 , matable1.champ3 , matable2.champ , matable1.champ , 
    matable1.ladatetruc format = datetime. as traitement_date
    from work.matable1 
    inner join matable1 on matable2.champ10=matable1.champ10;
     
    create table sortie2 as
     
    select distinct * , put(year(datepart(traitement_date)), 4.) as year , 
    CASE month(datepart(traitement_date)) 
    	 WHEN 1 THEN '01'
          	 WHEN 2 THEN '02'
          	 WHEN 3 THEN '03'
          	 WHEN 4 THEN '04'
          	 WHEN 5 THEN '05'
          	 WHEN 6 THEN '06'
          	 WHEN 7 THEN '07'
          	 WHEN 8 THEN '08'
          	 WHEN 9 THEN '09'
          	 WHEN 10 THEN '10'
          	 WHEN 11 THEN '11'
          	 ELSE '12'
    END AS month ,
    CASE day(datepart(traitement_date)) 
    	 WHEN 1 THEN '01'
          	 WHEN 2 THEN '02'
          	 WHEN 3 THEN '03'
          	 WHEN 4 THEN '04'
          	 WHEN 5 THEN '05'
          	 WHEN 6 THEN '06'
          	 WHEN 7 THEN '07'
          	 WHEN 8 THEN '08'
          	 WHEN 9 THEN '09'
           	 WHEN 10 THEN '10'     	 
           	 WHEN 11 THEN '11'
           	 WHEN 12 THEN '12'
           	 WHEN 13 THEN '13'     	 
           	 WHEN 14 THEN '14'
           	 WHEN 15 THEN '15'
           	 WHEN 16 THEN '16'     	 
           	 WHEN 17 THEN '17'
           	 WHEN 18 THEN '18'
           	 WHEN 19 THEN '19'     	 
           	 WHEN 20 THEN '20'
           	 WHEN 21 THEN '21'
           	 WHEN 22 THEN '22'
           	 WHEN 23 THEN '23'
           	 WHEN 24 THEN '24'
           	 WHEN 25 THEN '25'
           	 WHEN 26 THEN '26'
           	 WHEN 27 THEN '27'
           	 WHEN 28 THEN '28'
           	 WHEN 29 THEN '29'
    		 WHEN 30 THEN '30'
          	 ELSE '31'
    END AS day 
    from work.sortie2;
     
    run;

    Une fonction toujours utile : mette un 0 devant un chiffre et rien si il est entre 10 et 99 :
    Code SAS : Sélectionner tout - Visualiser dans une fenêtre à part
    put( var_month, z2.)

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

Discussions similaires

  1. [XSLT] afficher fichier xml venant d'oracle
    Par emperreur dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 05/03/2007, 09h41
  2. Problème de date avec JAVA & Oracle
    Par bobic dans le forum JDBC
    Réponses: 2
    Dernier message: 02/11/2006, 12h21
  3. format de date en entrée (oracle/asp)
    Par SorcierGris dans le forum SQL
    Réponses: 19
    Dernier message: 31/08/2006, 09h55
  4. problème champ date dans base oracle
    Par ludovik dans le forum Oracle
    Réponses: 6
    Dernier message: 25/07/2005, 15h48
  5. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09

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