LesezeichenAbonnierenRSS-Feed abonnieren
Katrin1606
Fluorite | Level 6

Hallo zusammen,

 

ich habe folgende Aufgabe erhalten, bei der ich bitte Eure Hilfe benötige:

 

a) Erstelle ein Data Set mit 4 Variablen. Diese Variablen sollen alle das heutige Datum beinhalten. Eingabe über 4 verschiedene Wege.

 

b) Kopiere den Programmcode von a und ergänze für jede der 4 Variablen ein anderes Format. (1 Format sollte der in Deutschland üblichen Datums"schreibweise" entsprechen)

 

Vielen Dank!

Katrin

6 ANTWORTEN 6
andreas_lds
Jade | Level 19

Mir ist nur ein Weg bekannt das aktuelle Datum in einer Variable zu bringen:

heute = today();

 

Nachtrag:

Natürlich könnte man auch eine Datumskonstante verwenden, aber das ist ja dann nur heute das aktuelle Datum:

heute2 = "11Apr2019"d;

oder mit der Funktion mdy:

heute3 = mdy(4, 11, 2019);
GrischaPfister
Fluorite | Level 6

Hallo Katrin,

 

wer stellt den solche Aufgaben? Oder ist das Teil Deiner Ausblldung und Du solltest Dich mit der SAS-Dokumentation beschäftigen?

 

Egal 😉

 

Es gibt drei übliche Quellen für das aktuelle Datum, das sind

1.) Funktionen

- date() und today(), beide liefern den Wert in Tagen ab dem 1.1.1960

- datetime() liefert Datum und Zeit, mit datepart() kann der Datumswert wieder extrahiert werden

- mdy(4,11,2019) erzeugt aus Monat, Tag und Jahr (alle numerisch) den SAS-Datumswert

 

2.) Makrovariablen

- &SYSDATE und &SYSDATE9 enthalten das Startdatum des SAS-Prozesses als Text in der Form ddMMMyy<yy>, d.h. Tag und Jahr numerisch (2 bzw. 4 stellig) und den Monat als englischsprachige Abkürzung (JAN - FEB - MAR - APR - MAY - JUN - JUL- SEP - OCT - NOV - DEC)

 

3.) Datums-Konstanten

- Datumskonstanten werden in der Form "ddMMMyyyy"D geschrieben, das Suffix "D" zeigt SAS an, dass es aus dem Text einen numerischen Wert bilden soll (gibt es auch für Time- und Datetime-Werte).

 

4.) Text mit input() Funktion Informat date.

- Dieser Text wird dann mit Hilfe der input() Funktion und des date. Informates wieder in eine Zahl zurückverwandelt. Dafür muss der Text aber in der Form ddMMMyyyy vorliegen.

Inzwischen (seit 9.3 oder 9.4?) gibt es auch das Informat anydtdte. (anydatetime - date), dass aus verschiedensten Text-Formaten den Datumspart auslesen kann.

 

Hier ein paar Beispiele mit passenden Formaten (ich präferiere ddmmyyp10. ...)

 


Data _Null_;
 date1 = date();
 date2 = today();
 date3 = input("&sysdate9",date.);
 date4 = "&sysdate9"d;
 Put (d:)(=ddmmyyp10.);
 Put (d:)(=eurdfdd10.);
 Put (d:)(=deudfdd10.);
 Put (d:)(=nldate10.);
Run;


data _null_;
  date = mdy(4,11,2019);
  put date=ddmmyyp10.;
Run;

data _Null_;
  dateC = "11/04/2019";
  dateN = input(dateC,anydtdte10.);
  put dateC= dateN= dateN=ddmmyyp10.;
Run;

Hoffe, das hilft weiter, viel Spaß beim Ausprobieren,

 

Grischa

 

JMS
Obsidian | Level 7 JMS
Obsidian | Level 7
data;
d=22222;
put d eurdfdd10.;
run;
mfab
Quartz | Level 8

Den Eindruck, dass hier Aufgaben aus einem Kurs gelöst werden sollen, habe ich auch. Letztendlich wird es nicht helfen, wenn man alle Aufgaben lösen lässt, statt sie selbst zu lösen, wobei das natürlich jeder selbst entscheiden muss.

Meine Vermutung wäre allerdings auch, dass es sich um Aufgaben handelt, die im Nachgang zu einem Foliensatz, einer Vorlesung oder einem Buch gestellt werden, denn es gibt viele verschiedene Arten ein Datum in ein Feld zu bekommen.

 

@Kurt_Bremser hat aus meiner Sicht schon die besten Hinweise geliefert.

Eine weitere Möglichkeit ist die Zuweisung aus einer anderen Variablen:

 

data test;
  a = '12APR2019'd;
  b = a;
run;

 

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Diskussionsstatistiken
  • 6 Antworten
  • 11341 Aufrufe
  • 8 Kudos
  • 6 in Unterhaltung