3 Monate von einem Datum abziehen

Liebe SAS-Freunde,

ich möchte aus diesen möglichen Angaben (aufgehört zu rauchen) und einem Untersuchungsdatum eine Jahresangabe ableiten:
(1) innerhalb des letzten Monats
(2) 1-3 Monate
(3) 4-6 Monate
(4) 7-12 Monate

z.B. 18.05.1998 - 1 Monat (für innerhalb des letzten Monats) = 18.04.1998, um das Jahr 1998 zu bekommen
oder 31.01.2001 - 3 Monat = 31.10.2000

Das Jahr aus dem Datum auslesen ist kein Problem, aber ich finde nirgends eine Funktion, die Monate abziehen kann.
Kann mir da jemand weiterhelfen?

Vielen Dank und viele Grüße
Susanne

Funktion INTNX

Hallo,

über folgenden Weg kann man das Jahr ermitteln.

DATA _NULL_;
 
  DatumA      =
'28MAY2009'd;
  DatumB      =
'10JUN2009'd;
  DatumC      =
'18JAN2009'd;

  JahrA3Mon  = YEAR(SUM(INTNX(
'MONTH',DatumA,-3,'SAMEDAY')));
  JahrB3Mon  = YEAR(SUM(INTNX(
'MONTH',DatumB,-3,'SAMEDAY')));
  JahrC3Mon  = YEAR(SUM(INTNX(
'MONTH',DatumC,-3,'SAMEDAY')));

  
PUT 'JahrA3Mon = ' JahrA3Mon;
  
PUT 'JahrB3Mon = ' JahrB3Mon;
  
PUT 'JahrC3Mon = ' JahrC3Mon;

RUN;

Ergebnis der LOG-Ausgabe:

JahrA3Mon = 2009
JahrB3Mon = 2009
JahrC3Mon = 2008

Warum das SUM?

Hallo,

warum sollte da ein SUM(...) zwischen stehen?
Das geht doch auch ohne, denn intnx() liefert einen date-Wert zurück, mit dem year() dann auch umgehen kann.

Schönen Gruß

Olaf Musch

Beim Editieren vergessen

Hallo,

stimmt, die SUM-Funktion ist an dieser Stelle natürlich überflüssig. Ich hatte den ursprünglichen Beitrag editiert, nachdem mich ein Arbeitskollege auf die Möglichkeit von "SAMEDAY" aufmerksam gemacht hat.

Der Vollständigkeit halber:

  JahrA3Mon  = YEAR(INTNX('MONTH',DatumA,-3,'SAMEDAY'));

hat geklappt

Hi Mario,
das hat super geklappt, auch dass SAS mit 'SAMEDAY' intern z.B. vom 30.März auf den 28.Februar springt. Vielen Dank für deine Hilfe!