2017-01-12 8 views
0

Ich habe ein Datum "20161" (das ist "Jan2016") als Zeichen, jetzt möchte ich es als "Jan2016" zeigen, wie kann ich das tun?Zeichen zu Datum Umwandlung

+0

Sie können Formate verwenden. 'PROC FORMAT' ermöglicht es Ihnen, ein eigenes Format zu erstellen, um zu ändern, wie Ihre Daten aussehen: http://www2.sas.com/proceedings/sugi30/001-30.pdf –

+0

Wie würden zweistellige Monate erscheinen, wenn Sie sich interessieren über diese? "201610"? – superfluous

Antwort

0

Um klar zu sein, Sie beginnen mit einer String-Variablen, und Sie möchten, dass das Ergebnis eine String-Variable ist? Dies scheint potentiell einschränkend zu sein, da Daten einfacher als Zahlen manipuliert werden können.

Wenn Sie Ihre Anfrage wörtlich nehmen, würde ich die ersten 4 Zeichen der angegebenen Zeichenfolge parsen und sie zum Jahr machen. Dann würde ich alle anderen Charaktere wie den Monat behandeln. Wir erstellen ein echtes Datum (numeric var) daraus mit der Funktion MDY(), indem wir annehmen, dass day = 1 ist.

Das gibt uns eine numerische Zwischenvariable, die wir an die Funktion PUT() übergeben werden, so dass wir die Zahl in eine Zeichenfolge in Ihrem gewünschten MONYY7 konvertieren können. Format. Das letzte Stück ist, dass Sie die Ausgabezeichenfolge in Kleinbuchstaben schreiben möchten, sodass wir das Endergebnis in eine LOWCASE() - Funktion einschließen.

Data test; 
x="20161"; *the input; 
y = mdy(substr(x,5),1,substr(x,1,4)); *a temporary intermediate variable that's a date/numeric var; 
z = lowcase(put(y, MONYY7.)); *convert back to string in the desired format, and lowercase it; 
drop y; *no longer needed; 
run;