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 13/08/2008, 13h28   #1
Membre actif
 
Inscription : avril 2008
Messages : 526
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 526
Points : 169
Points : 169
Par défaut Récupération heure dans variable datetime

Salut,

Je dispose d'une variable date qui se trouve au format datetime et qui apparait par exemple sous la forme 26MAY2007:06:30:00

Je voudrais pouvoir récupérer l'heure à partir de cette variable de sorte que
00:00:00 correspond à 0
00:30:00 correspond à 1
01:00:00 correspond à 2
...
23:30:00 correspond à 47.

Cad que je dispose de données demi-horaire et je voudrais crée une colonne de correpondance entre le format 00:00:00 (pour toutes les demi heures de la journée) et une colonne allant de 0 à 47 (correpondant au 48 demi-heures de la journée).

Si quelqu'un voit comment faire.
Merci.
stefsas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2008, 19h16   #2
Futur Membre du Club
 
Homme Julien
Inscription : juillet 2008
Messages : 16
Détails du profil
Informations personnelles :
Nom : Homme Julien
Âge : 26
Localisation : France, Morbihan (Bretagne)

Informations forums :
Inscription : juillet 2008
Messages : 16
Points : 16
Points : 16
Salut,

Le programme suivant devrait t'aider :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
DATA a;
datef ='26MAY2007:06:30:00';output;
datef ='26MAY2007:00:30:00';output;
datef ='26MAY2007:01:00:00';output;
datef ='26MAY2007:01:30:00';output;
datef ='26MAY2007:23:30:00';output;
run;
 
DATA b;
SET a;
date = input (datef, datetime.);
heure = HOUR(date);
min = minute(date);
demihor = heure*2;
IF min <30 then do;
demihor= demihor;
end;
else do;
demihor = demihor + 1;
end;
run;
jujubebere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/08/2008, 12h53   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 482
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 482
Points : 2 866
Points : 2 866
Une autre solution, où le code est plus court, et qui utilise la syntaxe (condition) qui vaut 0 si la condition est fausse, et 1 si elle est vraie.
Code :
1
2
3
4
5
6
7
8
9
10
11
DATA a;
datef ='26MAY2007:06:30:00'dt;OUTPUT;
datef ='26MAY2007:00:30:00'dt;OUTPUT;
datef ='26MAY2007:01:00:00'dt;OUTPUT;
datef ='26MAY2007:01:30:00'dt;OUTPUT;
datef ='26MAY2007:23:30:00'dt;OUTPUT;
run;
DATA b ;
	SET a ;
	demi_heure = HOUR(dateF)*2+(MINUTE(dateF)>= 30) ;
RUN ;
Olivier
olivier.decourt 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 05h06.


 
 
 
 
Partenaires

Hébergement Web