Bonjour,
Je souhaite automatiser certaines requêtes et leur envoi par mail.
L'une est à envoyer chaque lundi matin avec les résultats de la semaine précédente (du lundi au vendredi).
Voici ce que nous avons fait :
Nous sommes le 04/02/2020, en semaine 6.
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 %let DATE_DEBUT =%eval(%sysfunc(intnx(week,%sysfunc(date()),-1,beginning))+ 1 ); %let DATE_FIN =%eval(%sysfunc(intnx(week,%sysfunc(date()),-1,end)) - 1) ; %put (&date_debut.) ; DATA _NULL_; CALL SYMPUT('ANNEE_DEBUT', YEAR(&DATE_DEBUT.)); CALL SYMPUT('MOIS_DEBUT', MONTH(&DATE_DEBUT.)); CALL SYMPUT('SEMAINE_DEBUT', week(&DATE_DEBUT.)); CALL SYMPUT('ANNEE_FIN', YEAR(&DATE_FIN.)); CALL SYMPUT('MOIS_FIN', MONTH(&DATE_FIN.)); CALL SYMPUT('SEMAINE_FIN', week(&DATE_FIN.)); RUN; %put (&ANNEE_DEBUT.) ; %put (&MOIS_DEBUT.) ; %put (&SEMAINE_DEBUT.) ;
Or dans les logs et dans l'affichage date %SYSFUNC(CATS(&NUM_SEM.)), SAS me donne un numéro de semaine à 4 au lieu de 5 pour la semaine dernière.
Voici les logs :
Le problème est le même quand je remplace%let DATE_DEBUT =%eval(%sysfunc(intnx(week,%sysfunc(date()),-1,beginning))+ 1 );
26 %let DATE_FIN =%eval(%sysfunc(intnx(week,%sysfunc(date()),-1,end)) - 1) ;
27 %put (&date_debut.) ;
(21941)
28
29
30 DATA _NULL_;
31 CALL SYMPUT('ANNEE_DEBUT', YEAR(&DATE_DEBUT.));
32 CALL SYMPUT('MOIS_DEBUT', MONTH(&DATE_DEBUT.));
33 CALL SYMPUT('SEMAINE_DEBUT', week(&DATE_DEBUT.));
34 CALL SYMPUT('ANNEE_FIN', YEAR(&DATE_FIN.));
35 CALL SYMPUT('MOIS_FIN', MONTH(&DATE_FIN.));
36 CALL SYMPUT('SEMAINE_FIN', week(&DATE_FIN.));
37 RUN;
NOTE: Numeric values have been converted to character values at the places given by: (Line):(Column).
31:29 32:28 33:31 34:27 35:26 36:29
NOTE: DATA statement used (Total process time):
real time 0.00 seconds
cpu time 0.00 seconds
38
39 %put (&ANNEE_DEBUT.) ;
( 2020)
40 %put (&MOIS_DEBUT.) ;
( 1)
41 %put (&SEMAINE_DEBUT.) ;
( 4)
par les vrais dates :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 %let DATE_DEBUT =%eval(%sysfunc(intnx(week,%sysfunc(date()),-1,beginning))+ 1 ); %let DATE_FIN =%eval(%sysfunc(intnx(week,%sysfunc(date()),-1,end)) - 1) ;
Les logs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 %LET DATE_DEBUT = "27Jan2020"D; %LET DATE_FIN = "31jan2020"D;
/*A renseigner*/
Merci d'avance.25
26 %LET DATE_DEBUT = "27Jan2020"D;
27 %LET DATE_FIN = "31jan2020"D;
28
29 %put (&date_debut.) ;
("27Jan2020"D)
Partager