2017-10-17 6 views
1

Ich brauche Hilfe mit SAS-Datetime-Format. Dataset (einschließlich gewünschte Spalte exp_dt):Hinzufügen einer Anzahl von Tagen zum SAS-Datetime-Format

datetime   valid   exp_dt 
4OCT2017:13.00.00   1   5OCT2017:13.00.00 
4OCT2017:15.20.00   7   11OCT2017:15.20.00 
6OCT2017:08.00.00   30  5NOV2017:08.00.00 

Also, ich brauche gültige Werte (Anzahl der Tage) Datumzeit hinzuzufügen. Ich habe gerade mit SAS Base begonnen und bin mir nicht sicher, ob ein anderes Datetime-Format akzeptabel ist. Ich habe mit dieser versucht, aber sicher nicht, wenn auch in richtigen Richtung:

PlannedSchedTime = datetime ; 
Postunit = 'DAY' ; 
postval = valid ; 
exp_dt = put(intnx(Postunit,PlannedSchedTime,postval,'same'),datetime20.); 
put exp_dt= ; 
run; 

Auch ich arbeite Projekt in SAS Enterprise Guide, so möglicherweise dort einfache Art und Weise durch die GUI-Aufgaben?

Antwort

1

Hier ein Codebeispiel, das Ihr gewünschtes Ergebnis ausdrucken wird. Wie bei den anderen Antwortzuständen teilt DTDAY SAS mit, dass Tage hinzugefügt werden sollen, wenn der Basiswert eine Datetime anstelle eines Datums ist.

data datetimes; 
    informat datetime anydtdtm. valid best12.; 
    format datetime datetime20.; 
    input datetime valid; 
    cards; 
4OCT2017:13.00.00 1 
4OCT2017:15.20.00 7 
6OCT2017:08.00.00 30 
; 
run; 

data datetimes_added; 
    set datetimes; 
    format exp_dt datetime20.; 
    exp_dt = intnx('DTDAY',datetime,valid,'SAME'); 
    put exp_dt = ; 
run; 
1

Sie sind definitiv auf dem richtigen Weg! Da es sich um datetime Werte handelt, ersetzen Sie DAY durch dtDAY. Wenn Sie nicht möchten, dass exp_dt eine Zeichenspalte ist, verwenden Sie nicht die put Funktion, sondern ein Format (z. B. format exp_dt2 datetime20.;).

+0

In SAS ist 'datetime' nur die Anzahl der Sekunden seit' 1960-01-01 00: 00: 00', die in einem lesbaren Format angezeigt wird. Daher würde auch das Hinzufügen von '24 * 60 * 60 * valide' funktionieren. Ich bin mir nicht sicher, wie sich die Sommerzeit auf das Ergebnis auswirken würde. – Petr

+1

Datetime-Werte haben keine Vorstellung von der Sommerzeit, also würde die einfache Mathematik, die Sie dort angeben, für das Beispiel in der Frage funktionieren. Ich bevorzuge jedoch die intnx-Funktion, weil sie sauberer erscheint und ich die Interpretation leichter finde. – John

Verwandte Themen