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 :

Proc sql condition sur variable date


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut Proc sql condition sur variable date
    Bonjour,

    Je travaille sue SAS EG et je rencontre un problme assez étrange.

    A partir de ma table source STATPROD.HISTORIQUE , je créé la table WORK.TMP_HISTORIQUE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    data STATPROD.tmp_historique ;
    set STATPROD.HISTORIQUE ;
     
    	ATTRIB to_char_GROUPS_CODE format = $50.;
    	to_char_groups_code = GROUPS_CODE ;
     
    	ATTRIB to_number_HI_STR3 format = 12.0;
    	to_number_HI_STR3 = HI_STR3 ;
     
    run;
    ceci marche sans problème : aucune perte de données, formta des variables identiques etc.


    Ensuite, j'exécute cette requête sur WORK.TMP_HISTORIQUE*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    %let P_DAT_DEB_AF_DATE_CREA = '01DEC2011:15:15:15'd ;
    %let P_DAT_FIN_AF_DATE_CREA = '01JAN2012:15:15:15'd ;
    Proc sql;
    Create table work.titi as select * from */*STATPROD.HISTORIQUE*/ work.tmp_historique A where (A.date < &P_DAT_FIN_AF_DATE_CREA) *AND *(A.date >= &P_DAT_DEB_AF_DATE_CREA) ;
    quit;
    Cette requê me renvoi un resultat vide quand je lexecute sur work.tmp_historique et fonctionne très bien quand je l'execute sur STATPROD.HISTORIQUE.

    AUriez vous une idée d'où ceci peut venir ? Et comment y remédier ?

    A noter, je suis obligé de passer par cette table intermédiaire pour la conversion des deux colonnes en CHAR et en NUMERIC.

    En vous remerciant

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 747
    Points : 978
    Points
    978
    Par défaut
    ben il y a beaucoup d'étoiles : *

    pourquoi?

    X

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Le proxy de mon navigateur ne me permet pas de poster sur le forum.
    J ai du passer par mon téléphone portable pour poster ce message. Il s agit juste de coquilles dues a la manip. La seule étoile a prendre en compte est celle de la clause Select. Desolé pour les erreurs de manip :p

  4. #4
    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
    Citation Envoyé par walooze Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    %let P_DAT_DEB_AF_DATE_CREA = '01DEC2011:15:15:15'd ;
    %let P_DAT_FIN_AF_DATE_CREA = '01JAN2012:15:15:15'd ;
    d ou dt à la fin de tes datetimes ? Est-ce que c'est aussi une coquille de ton téléphone ou un oubli dans le code ? Dans ce dernier cas, je pense que DT s'impose pour espérer un résultat correct.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2011
    Messages : 30
    Points : 12
    Points
    12
    Par défaut
    Je viens de tester avec dt et cela fonctionne . Merci bcp.

    Saurais tu pk ce marchait bien ac d dans ma librairie Statprod et pk cela ne fonctionnait pas Ds mon work ?

  6. #6
    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
    Par défaut
    d pour date (YYYYMMDD)
    dt pour un datetime (date + temps) (YYYYMMDD:HH:MM:SS)

  7. #7
    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
    Peut-être parce que STATPROD n'est pas une bibliothèque SAS mais une base de données externe (Oracle, DB2, etc.) déguisée en bibliothèque ? Dans ce cas, il y aura une étape supplémentaire de traduction opérée par SAS entre ta requête et la base de données. Par contre, dans WORK, SAS bosse en direct et peut ne pas interpréter les choses à l'identique.
    Ce n'est qu'une hypothèse.

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

Discussions similaires

  1. [WD18] Requête SQL sélection condition sur 2 Dates
    Par zouzoukha dans le forum WinDev
    Réponses: 2
    Dernier message: 25/07/2014, 11h32
  2. [AC-2007] Requete SQL sur variables date avec #
    Par KIK83 dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/10/2009, 06h31
  3. Réponses: 2
    Dernier message: 22/04/2009, 10h47
  4. [T-SQL]Envoyer en paramètre de proc stock Sybase une variable date shell
    Par Doctor Z dans le forum Adaptive Server Enterprise
    Réponses: 5
    Dernier message: 30/10/2007, 16h18
  5. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25

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