Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
Contributor
Beiträge: 42
Zeichenkette aus Timestamp

Hallo zusammen,

 

ich habe ein Problem mit meinem Datum, das als Timesamp vorliegt. Ich müsste aus einem beliebigen Tag eine Zeichenkette formen. Beispiel: 01.10.2015 .... soll umgewandelt werden in Quartal 3 / 2015.

 

Kann mir hier jemand helfen? Vielen Dank im voraus!

Contributor
Beiträge: 21
Re: Zeichenkette aus Timestamp

Hallo Fay123,

 

es gibt verschiedene Möglichkeiten. Die noch relativ neue Funktion nldate() gibt für einen SAS-Datumswert eine Zeichenkette zurück, dabei können verschiedene Platzhalter für Tage, Monate und Quartale verwendet werden. Ansonsten kann der String natürlich über Funktionen und Formate zusammengesetzt werden, hier für beides ein Beispiel:

Options locale = de_DE;

Data _Null_;
  Length datum 8 text $32;
datum = date(); text = nldate(datum,'%Q / %Y'); Put (_all_)(=); text = cat("Quartal ",putn(datum,"qtr1."), " / ", year(datum)); Put (_all_)(=); Run;

Viele Grüße,

 

  Grischa

Occasional Contributor
Beiträge: 15
Re: Zeichenkette aus Timestamp

Den Zeichenstring würde ich mittels

---8<-----

format datum DDMMYY10.;
datum = input(datum_txt,DDMMYY10.);

--->8-------

konvertieren.

 

Anschließend mit

---8<-----

m = month(datum);

y = year(datum);

--->8-------

die Daten extrahieren und mittels mod(m) das Quartal gewinnen. Evtl. gibt es auch sowas wie quarter(...).

 

Grüße

Wolfgang Müller

 

 

Super User
Beiträge: 7.863
Re: Zeichenkette aus Timestamp
datepart() extrahiert das Datum aus einem Timestamp. qtr() liefert das Quartal und year() das Jahr aus einem Datum. Dann muss man die Zahlen nur mehr mit put() in Strings umwwandeln und verketten.
---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
Contributor
Beiträge: 42
Re: Zeichenkette aus Timestamp

Vielen Dank an alle! Das hat super geklappt :-)

SAS Super FREQ
Beiträge: 709
Re: Zeichenkette aus Timestamp

Es ist möglich ein eigenes Datumsformat zu erstellen. dies geht mit Proc FORMAT und der PICTURE Anweisung.

 

Hier ein Programmbeispiel, das Format kann direkt auf einen DatumsZeitwert angewendet werden.

 

proc format;
  picture myQtrDate (default=16)
    low - high = 'Quartal %q / %Y' (datatype=datetime)
  ;
run;

data _null_;
  now = datetime();
  putlog now myQtrDate.;
run;

Bruno