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

Macro Discussion :

Format date pour une macro variable


Sujet :

Macro

  1. #1
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut Format date pour une macro variable
    Bonjour,

    J'ai un petit souci de format date et souhaiterais vous demander de l'aide svp.
    Je souhaite formatter une macro variable en format ddmmyy10., mais la ligne de code suivante ne fonctionne pas et je ne comprends pas le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %let aamm = 201209;
    %let aa = %sysfunc(substr(&aamm.,1,4));
    %let mois = %sysfunc(substr(&aamm.,5,2));
    %let dtfin = %sysfunc(InputN(mdy(%eval(&mois.+1),01,&aa.),ddmmyy10.));
    La macro variable &dtfin. ne prend pas le format ddmmyy10. que je souhaite avoir, et je ne suis pas sur l'utilisation de la fonction inputN, pouvez vous m'aider sur le problème svp.

    Merci d'avance
    Lily

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello;
    pour afficher 10/01/2012, moi j'aurai fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    %let dtfin = %eval(&mois.+1)/01/&aa.;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    tu peux faire (pour gérer les mois 12 et compagnie ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    %let aamm = 201209;
    %let dtdeb=%sysfunc(mdy(%sysfunc(substr(&aamm.,5,2)),01,%sysfunc(substr(&aamm.,1,4))));
    %let dtfin=%sysfunc(intnx(month,&dtdeb,1));
    %let dtfin_char = %sysfunc(putN(&dtfin,ddmmyy10.));
    résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    %put aa = &aa  -  mois = &mois  -  dtdeb = &dtdeb  -  dtfin = &dtfin  -  dtfin_char = &dtfin_char;
    aa = 2012  -  mois = 09  -  dtdeb = 19237  -  dtfin = 19267  -  dtfin_char = 01/10/2012

  4. #4
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    Bonjour à vous edward et sam,

    Je vous remercie pour vos réponses respectives, je voudrais quand même savoir pourquoi ma synthaxe n'a pas fonctionné? i.e pourquoi on ne pourrait pas affecter le format ddmmyy10. directement à l'intérieur de %sysfunc, c'est pourtant ce que j'ai cru comprendre...

    Merci encore!!

  5. #5
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    1 - tu dois utiliser un %sysfunc devant ta fonction MDY.
    2 - la fonction mdy va te retourner une valeur numérique, et donc, tu doit utiliser un putN au lieu d'un inputN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %let dtfin = %sysfunc(putN(%sysfunc(mdy(%eval(&mois.+1),01,&aa.)),ddmmyy10.));

  6. #6
    Membre du Club
    Inscrit en
    Mai 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 60
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par edward carnby Voir le message
    1 - tu dois utiliser un %sysfunc devant ta fonction MDY.
    2 - la fonction mdy va te retourner une valeur numérique, et donc, tu doit utiliser un putN au lieu d'un inputN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %let dtfin = %sysfunc(putN(%sysfunc(mdy(%eval(&mois.+1),01,&aa.)),ddmmyy10.));
    Merci beaucoup edward!!

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

Discussions similaires

  1. Réponses: 40
    Dernier message: 04/11/2016, 17h28
  2. Formats différents pour une même variable
    Par Petru16 dans le forum SAS Base
    Réponses: 4
    Dernier message: 25/03/2010, 13h46
  3. Réponses: 4
    Dernier message: 14/12/2009, 12h53
  4. Manipuler le format retourné pour une date.
    Par BlackMinou dans le forum Oracle
    Réponses: 3
    Dernier message: 05/04/2006, 18h01
  5. [C#] Format des dates pour une ComboBox...
    Par frechy dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/01/2005, 17h08

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