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 :

Conditions sur date pour modification données


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 39
    Points
    39
    Par défaut Conditions sur date pour modification données
    bonjour le forum,

    J'ai une table avec 4 variables
    date_jour--------periode--------debut_mois--------fin_mois
    26JUN12-----------45------------01JUN12---------30JUN12
    27JUN12-----------45------------01JUN12---------30JUN12
    28JUN12-----------46------------01JUN12---------30JUN12

    (date_jour contient toutes les dates de jour depuis 10 ans)

    Je souhaiterai connaître une solution qui lorsque je lance le programme, me trouve la date du jour au format date7. et grâce à cette date va me renseigner sur 3 variables correspondant à la bonne date.

    Par exemple si je lance mon programme aujourd'hui :
    periode vaut 46
    debut_mois vaut 01JUN12
    fin_mois vaut 30JUN12

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bjr,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    %LET auj = %SYSFUNC(INPUTN(&SYSDATE,Date7.));
    %PUT &auj. ; 
    data _null_ ; 
    set test ; 
    if &auj. = date_jour then PUT "periode :" periode "deb" debut_mois "fin" fin_mois ; 
    run ;
    En esperant que ceci vous convienne
    Je suis persuadé que d'autres plus expérimentés feront mieux

    Cdt

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Il y a la fonction TODAY() qui renvoie la date du jour au format SAS. Tu peux donc écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE date_jour = TODAY() ;
    si date_jour est numérique, ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE PUT(TODAY(),DATE7.)=date_jour ;
    si date_jour est caractère.
    Ensuite, les PUT de Romain afficheront effectivement les valeurs dans la Log. Si tu les veux dans des macro-variables, il faudra autant de CALL SYMPUTX.

    Bon courage.
    Olivier

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    je m'en suis sorti comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    data selection;
    set table;
    where jour=%SYSFUNC(INPUTN(&SYSDATE,Date7.));
    run;
     
    option symbolgen;
    data _null_;
    set selection;
    call symput('periode', periode);
    call symput('debutmois', debut_mois);
    call symput('finmois', fin_mois);
    run;
    En gros j'ai gardé uniquement la date qui m'interessait et j'ai utilisé les call symput pour initialiser mes variables.

    Merci beaucoup

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 03/06/2009, 05h14
  2. Requête condition sur date
    Par napegadie dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/06/2007, 14h24
  3. Requetes Avec Count et condition sur date
    Par Harry dans le forum WinDev
    Réponses: 1
    Dernier message: 04/06/2007, 15h23
  4. [Access] requete sql avec condition sur date
    Par qeja dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/03/2006, 23h54
  5. Condition sur requete pour Action MAcro
    Par hugo69 dans le forum Access
    Réponses: 4
    Dernier message: 12/10/2005, 12h24

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