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!
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
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
Vielen Dank an alle! Das hat super geklappt 🙂
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
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.