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 :

Nombre de mois entre deux dates


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Nombre de mois entre deux dates
    Bonjour,

    Je cherche à obtenir un nombre de mois en soustrayant deux dates, mais cela ne semble pas fonctionner de la même manière qu'avec les années (fonction YRDIF ou YEAR).

    J'ai une variable ageR qui doit être égale à dat1-dat2, mais cette fois en mois.
    Or je n'arrive pas à adapter le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ageR = YEAR(DATEPART(dat1)) - YEAR(DATEPART(dat2)) ;
    Un grand merci à vous par avance.

  2. #2
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Bonjour,
    En faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ageR = (DATEPART(dat1) - DATEPART(date2))/30;

  3. #3
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Mais la fonction INTCK ne vous motive pas plus que de faire cela à la mimine ?

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    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 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Citation Envoyé par Slixounet Voir le message
    J'aurais une nouvelle demande si cela ne vous embête pas trop...

    Je cherche à obtenir un nombre de mois en soustrayant deux dates, mais cela ne semble pas fonctionner de la même manière qu'avec les années.

    J'ai toujours mon ageR qui doit être égale à dat1-dat2, mais cette fois en mois.

    .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    data _null_;
     
    a= input ("10jan2009 12:00", datetime16.);
    b= input ("20feb2011 14:20", datetime16.);
     
    c=(month(datepart(b))-month(datepart(a))) + (year(datepart(b))-year(datepart(a)))*12;
     
     
    put "resultat"  c= ;
    run;

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    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 625
    Points : 3 403
    Points
    3 403
    Par défaut
    Citation Envoyé par datametric Voir le message
    Mais la fonction INTCK ne vous motive pas plus
    que de faire cela à la mimine ?
    oui
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    DATA _null_;
     
    a= input ("10jan2009 12:00", datetime16.);
    b= input ("20feb2011 14:20", datetime16.);
     
     
    d= intck ('month',datepart(a),datepart(b));
     
    put "resultat"  d= ;
    run;

  6. #6
    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
    Un petit bémol sur INTCK, puisqu'on va compter les débuts de mois. Donc entre hier (28/2) et aujourd'hui (1/3) il s'est écoulé un mois pour INTCK.
    Perso, si j'avais dormi un mois cette nuit, je serais plus en forme.

    Moi la solution soustrayant les dates et divisant par 30 me semble une bonne piste si on veut être précis. On peut même diviser par 30.4375 (365.25 jours divisés par 12 mois).
    En attendant que SAS produise la fonction MONTHDIF ?

  7. #7
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Ici d1 prend la bonne valeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DATA _null_;
     
    a= input ("28feb2011 12:00", datetime16.);
    b= input ("1mar2011 14:20", datetime16.);
     
     
    d1= intck ('month',datepart(a),datepart(b),'CONTINUOUS'  );
    d2= intck ('month',datepart(a),datepart(b),'DISCRETE'  );
     
    put "resultat "  d1= / d2=   ;
    run;
    resultat d1=0
    d2=1

  8. #8
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Salut Stéphane,
    J'ai testé ton bout de code, voici ce que j'ai dans la log:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    d1= intck ('month',datepart(a),datepart(b),'CONTINUOUS'  );
             -----
     
    d2= intck ('month',datepart(a),datepart(b),'DISCRETE'  );
             -----
     
    ERREUR 72-185: L'appel de la fonction INTCK contient trop d'arguments.

  9. #9
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    C'est en 9.2 que cela fonctionne.

  10. #10
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Citation Envoyé par datametric Voir le message
    C'est en 9.2 que cela fonctionne.
    Ok, je m'en doutais après avoir posté

  11. #11
    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

Discussions similaires

  1. [SQL] Calcul du nombre de mois entre deux dates
    Par Lolie11 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/03/2009, 11h46
  2. Récupérer le nombre de mois entre deux dates
    Par winow dans le forum C++Builder
    Réponses: 2
    Dernier message: 23/08/2008, 23h17
  3. Différence en nombre de mois entre deux dates
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/05/2007, 12h26
  4. [Dates] nombre de mois entre deux dates
    Par Mat_DZ dans le forum Langage
    Réponses: 14
    Dernier message: 23/11/2006, 16h10
  5. Nombre de mois entre deux dates
    Par boulaxx dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 14/09/2006, 15h22

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