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
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.