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 :

Problème de datetimes!


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Profil pro
    Statisticienne
    Inscrit en
    Mars 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Statisticienne

    Informations forums :
    Inscription : Mars 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Problème de datetimes!
    Bonjour,
    Je suis nouvelle sur le forum, je suis étudiante en bio-statistiques et je suis et serais donc amené à travailler sur SAS tous les jours!
    Aujourd'hui en stage se pose a moi un pb de datetimes (notion découverte il y a une semaine!!)

    Bref voilà mon pb:
    J'ai une variable sous forme date9. et je souhaite connaitre son maximum et minimum.
    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    proc means data=comple max min;
    format M_date date9.;
    var  M_date;
    run;
    Seulement la sortie est en datetimes et je n'arrive pas à faire qu'il me sorte max et min en date9..

    Je vous remercie par avance de votre aide.

    Bettylola

  2. #2
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Bonjour,

    La fonction datepart te permet d'extraire la partie date 'yyyymmdd' d'une variable datetime et timepart l'autre partie 'hhmmss'.

    Cordialement

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 163
    Points
    163
    Par défaut
    Bonjour,

    moi j'utilise ce prog :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data _null_;
    min=17198;
    max=17562;
    format min max ddmmyys10.;
    put min;
    put max;
    run;
    ash_rmy

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    On peut utiliser la procédure SQL et les fonctions MIN() et MAX() pour extraire le maximum et le minimum. Je vous propose un exemple ci-dessous. C'est probablement plus simple que la procédure MEANS. Si vous voulez vraiment utiliser PROC MEANS, il faudra sûrement envisager ODS.

    Cordialement,

    Véronique

    _______________________
    Véronique Bourcier
    www.sasreference.fr
    Blog pour se former au SAS

    Dans un premier temps, je crée une variable appelée dat_tim qui contient des valeurs SAS datetime.
    • L'ajout du format est optionnel. Il permettra de lire la datetime SAS en langage humain avec un proc print.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    data dat_tim;
      dat_tim='28FEB2004:01:50:32'dt;
      output;
      dat_tim='25JAN2004:13:12:01'dt;
      output;
      dat_tim='15MAR2005:06:10:11'dt;
      output;  
    run;
     
    *proc print data=dat_tim;
      *format dat_tim datetime.;
    *run;
    Ensuite, on peut utiliser une procédure SQL pour extraire le maximum et le minimum.
    • Create table... permet de créer la table, sinon le résultat apparaît directement dans l'output.

    • J'imagine qu'il faudra calculter le minimum et maximum par patient, pays ou autre. Dans le cas, on ajoutera "group by...".

    • Les format=datetime. sont également optionels.

    • Enfin, on notera que les fonctions MIN et MAX ignore les valeurs manquantes. Ainsi le minimum de . et 2 est 2.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    proc sql;
       /*create table monexemple as*/
       select distinct min(dat_tim) as min_dat_tim format=datetime.,
                       max(dat_tim) as max_dat_tim format=datetime.
       from dat_tim
       /*group by patient...*/;
    quit;

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 16
    Points : 22
    Points
    22
    Par défaut
    Je viens de m'apercevoir qu'il s'agissait de date9. et non datetime. Le principe est le même que dans mon précédent message. J'imagine que vos dates sont numériques à la base avec un format date9. dessus pour les rendre compréhensible.

    Véronique

    _______________________
    Véronique Bourcier
    www.sasreference.fr
    Blog pour se former au SAS

    Code : 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
    data dat;
      dat='28FEB2004'd;
      output;
      dat='25JAN2004'dt;
      output;
      dat='15MAR2005'dt;
      output;  
    run;
     
    *proc print data=dat;
      *format dat date9.;
    *run;
     
    proc sql;
       /*create table monexemple as*/
       select distinct min(dat) as min_dat format=date9.,
                       max(dat) as max_dat format=date9.
       from dat_tim
       /*group by patient...*/;
    quit;

Discussions similaires

  1. Problème de dateTime
    Par Mr_Coinche dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 04/04/2011, 11h59
  2. Problème de DateTime.ParseExact
    Par blbird dans le forum C#
    Réponses: 6
    Dernier message: 22/07/2010, 22h19
  3. Problème champ datetime
    Par dubitoph dans le forum Requêtes
    Réponses: 2
    Dernier message: 26/08/2009, 09h52
  4. [sql-server]problème type datetime
    Par -Neo- dans le forum Windows Forms
    Réponses: 1
    Dernier message: 17/01/2008, 09h52
  5. problême avec datetime
    Par Xanime dans le forum Services Web
    Réponses: 1
    Dernier message: 13/06/2007, 16h24

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