Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/02/2008, 22h24   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 90
Points : 10
Points : 10
Par défaut Format Datetime => DD\MM\YY

Quand j'importe un fichier d'Excel ,je récupére une date sous forme datetime
càd ddMMMYY:hh:mm:ss
je voudrais faire un format de cette date pour l'extraire sous forme
DD\MM\YY.
j'ai essayé comme ci-dessous ,mais ma date s'affiche comme ça ******** bizarre ???

Code :
1
2
3
4
5
6
DATA output1; 
SET input1; 
       BY key1; 
           FORMAT MaDATE ddmmyy10.; 
           MaDATE=Substr(MaDATE,0,7); 
run;
merci d'avance pour votre contribution à la résolution de ce petit probléme( désagréable néaumoins,.-
_debutant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 10h07   #2
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour,
Je vois déjà une erreur : tu dois commencer ton substr à 1 et pas à 0.
Fafabzh
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 10h18   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 90
Points : 10
Points : 10
Slt, merci pour coup de main.
J'ai changé maisn la même chose , idem il me sort la date ouput suivants:
30/09/2000 alors que la date input est 01MAR2007:00:00:00 ,
étrange non???
je sais que je ne suis pas encore le roi de SAS, mais la , il y'a le truc que moi je ne vois pas...

Code :
1
2
3
4
5
6
7
 
DATA output1; 
SET input1; 
BY key1; 
FORMAT MaDATE ddmmyy10.; 
MaDATE=Substr(MaDATE,1,7); 
run;
_debutant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 10h26   #4
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Je te rassure SAS a pas mal de problème pour les conversions de date.
Tu peux aller fouiller dans la proc import pour voir si tu peux toi même définir les types de variables.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 14h44   #5
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 90
Points : 10
Points : 10
Petite précision:

La data input est une table SAS , ma date est sous le format : DDMMMYYYY:HH:MM:SS
exemple: 01MAR2007:00:00:00

alors qu'en ouput je récupére : 30/09/2000
_debutant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 15h57   #6
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Re,
Une autre solution est de convertir en format texte ta date à partir du fichier EXCEL ... tu pourra ensuite travailler plus facilement sur ta date dans SAS.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 16h23   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 90
Points : 10
Points : 10
cette conversion de la date en format , je dois la faire dans la proc l'import?
_debutant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 16h30   #8
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Tu dois faire la conversion de ta date en texte à partir de ton fichier EXCEL(clickl droit ->format cellule->texte) et ensuite tu importes ton fichier sous sas.
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 16h41   #9
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Citation:
Envoyé par _debutant Voir le message
Quand j'importe un fichier d'Excel ,je récupére une date sous forme datetime
càd ddMMMYY:hh:mm:ss
je voudrais faire un format de cette date pour l'extraire sous forme
DD\MM\YY.
j'ai essayé comme ci-dessous ,mais ma date s'affiche comme ça ******** bizarre ???

Code :
1
2
3
4
5
6
DATA output1; 
SET input1; 
       BY key1; 
           FORMAT MaDATE ddmmyy10.; 
           MaDATE=Substr(MaDATE,0,7); 
run;
merci d'avance pour votre contribution à la résolution de ce petit probléme( désagréable néaumoins,.-

regarde le code suivant la fonctio datepart te pemet d'extraire la partie ddmmyy d'une vareiable datetime et timepart te permet de récupérer mmnnss
Code :
1
2
3
4
5
6
DATA t;
format e datetime.;
format t ddmmyy8.;
e=date();
t=datepart(e);
run;

Cordialement
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 16h59   #10
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 90
Points : 10
Points : 10
Merci les gars pour votre aide.
c'est que ça marche comme le code voir plus bas aussi.
mais, sur le fichier en question non pas moyen , ça ne marche pas il me sort toujours 03/09/2000 rien à voir avec 01/03/2007.

Code :
1
2
3
4
5
6
7
8
9
10
DATA D;
   attrib date length=4   format=ddmmyy10. /* informat=datetime16.*/
          date0 length=$16;
   INFILE datalines delimiter=',';
   input date0 ;
   date=input(substr(date0,1,7),date7.);
   datalines;
12MAR2007:09:30:15
;
run;
_debutant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/02/2008, 17h32   #11
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Citation:
Envoyé par _debutant Voir le message
Merci les gars pour votre aide.
c'est que ça marche comme le code voir plus bas aussi.
mais, sur le fichier en question non pas moyen , ça ne marche pas il me sort toujours 03/09/2000 rien à voir avec 01/03/2007.

data D;
attrib date length=4 format=ddmmyy10. /* informat=datetime16.*/
date0 length=$16;
infile datalines delimiter=',';
input date0 ;
date=input(substr(date0,1,7),date7.);
datalines;
12MAR2007:09:30:15
;
run;
Je pense que cela répond à ta question :

Code :
1
2
3
4
5
6
7
8
9
10
11
DATA D;
format date0 datetime20.;
format date1 ddmmyy10.;
INFILE datalines delimiter=',';
input date0 datetime20.;
date1=datepart(date0);
datalines;
12MAR2007:09:30:15
01JAN2007:04:52:53
;
run;
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2008, 08h53   #12
Candidat au titre de Membre du Club
 
Inscription : décembre 2007
Messages : 90
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 90
Points : 10
Points : 10
ça marche maintenant.

merci les gars... un vrai travail d'équipe.

Thx.
_debutant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h53.


 
 
 
 
Partenaires

Hébergement Web