Ich muss eine Zahl berechnen, die der "nächsten" Anzahl von Monaten zwischen zwei Daten entspricht. Die Standard-SAS-Funktion (INTCK) ist jedoch nicht darauf ausgelegt, den DAY seiner Datumsparameter zu berücksichtigen (z. B. Code unten löst sich auf 0 auf, wenn ich ihn auf 1 runden möchte).SAS DATE Ausgabe - Berechnung "NEAREST MONTH"
Was ist der "beste" Weg zur Lösung dieses Problems?
data _null_;
x="01APR08"d;
y="28APR08"d;
z=intck('MONTH',x,y);
put z= ;
run;
EDIT: Antwort auf Martins Kommentar.
Ich würde auf 0 Monate runden - ich glaube nicht, dass die Grenze relevant ist. Die Funktion, die ich versuche zu replizieren (NEAREST_MONTHS) stammt von DCS (Sungard Prophet Application). Ich warte jetzt auf die Möglichkeit, einige Tests innerhalb der Anwendung selbst durchzuführen, um mehr darüber zu erfahren, wie es mit Daten umgeht (wird die Ergebnisse hier zurückgeben)).
Die Hilfedatei enthält folgende Komponenten: Kategorie Datum
Beschreibung
Gibt die Differenz zwischen zwei Daten zur nächsten Anzahl von Monaten. Wenn das zweite Datum später als das erste Datum ist, wird 0 zurückgegeben.
Syntax
NEAREST_MONTHS (Later_Date, Earlier_Date)
Rückgabetyp Integer
Beispiele
NEAREST_MONTHS (date1, date2) Returns 8, wenn date1 ist 20/3/1997 und date2 ist 23/7/1996
NEAREST_MONTHS (date1, date2) Gibt 26 zurück, wenn Datum1 ist 20/3/1997 und Datum2 ist 1/2/1995
Diese heikel ist, da Sie wirklich für die Rundung nicht Ihre Regeln definieren. Möchten Sie beispielsweise das Intervall zwischen 30.04.09 und 01.May09 auf 1 Monat runden, da es die Grenze zwischen 2 verschiedenen Monaten überschreitet, oder würden Sie es auf 0 Monate runden, da es nur ein 1-Tages-Intervall ist? –