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 :

Numéro de semaine erroné


Sujet :

Macro

  1. #1
    Membre à l'essai
    Homme Profil pro
    Pilote production
    Inscrit en
    Janvier 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Pilote production

    Informations forums :
    Inscription : Janvier 2020
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Numéro de semaine erroné
    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 :

    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.) ;
    Nous sommes le 04/02/2020, en semaine 6.
    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 :
    %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)
    Le problème est le même quand je remplace
    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) ;
    par les vrais dates :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %LET DATE_DEBUT = "27Jan2020"D;
    %LET DATE_FIN = "31jan2020"D;
    Les logs :

    /*A renseigner*/
    25
    26 %LET DATE_DEBUT = "27Jan2020"D;
    27 %LET DATE_FIN = "31jan2020"D;
    28
    29 %put (&date_debut.) ;
    ("27Jan2020"D)
    Merci d'avance.

  2. #2
    Membre du Club
    Femme Profil pro
    Formatrice en SAS (en ligne)
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Formatrice en SAS (en ligne)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Cela dépend du second argument de la fonction que tu utilises :

    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
    21
    22
    data test;
        x='01FEB2020'd; output;
        x='02FEB2020'd; output;
        x='03FEB2020'd; output;
        x='04FEB2020'd; output;
        x='05FEB2020'd; output;
        x='06FEB2020'd; output;
        x='07FEB2020'd; output;
        x='08FEB2020'd; output;
        x='09FEB2020'd; output;
    run;
     
    data test;
        set test;
        wk_u=week(x,'U');
        wk_v=week(x,'V');
        wk_w=week(x,'W');
    run;
     
    proc print data=test noobs;
        format x weekdate.;
    run;
    Nom : xxformat_sas.JPG
Affichages : 394
Taille : 34,3 Ko

    https://documentation.sas.com/?docse...=3.1&locale=en

    Véronique

  3. #3
    Membre à l'essai
    Homme Profil pro
    Pilote production
    Inscrit en
    Janvier 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Pilote production

    Informations forums :
    Inscription : Janvier 2020
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Merci pour la réponse.
    Il ne me reste plus qu'à trouver quel jour est le lundi...

  4. #4
    Membre du Club
    Femme Profil pro
    Formatrice en SAS (en ligne)
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Formatrice en SAS (en ligne)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Rehoc59 Voir le message
    Bonjour,

    Merci pour la réponse.
    Il ne me reste plus qu'à trouver quel jour est le lundi...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc print data=test;
    where weekday(x)=1;
    run;

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

Discussions similaires

  1. [Crystal] transformation d'une date en numéro de semaine
    Par barna dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 24/03/2017, 09h41
  2. Numéro de semaine erroné avec Calendar
    Par peofofo dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 08/08/2011, 08h25
  3. Résultat du Calcul numéro de semaine erroné
    Par jerem7w dans le forum SQL
    Réponses: 2
    Dernier message: 07/09/2010, 13h38
  4. Numéro de semaine erroné
    Par ben_harper dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2009, 17h01
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

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