LesezeichenAbonnierenRSS-Feed abonnieren
Katrin1606
Fluorite | Level 6

Hallo,

 

ich benötige bitte mal wieder Hilfe.

 

Ich habe folgende Spalten:

 

Datum 1 (Format: num., length 8, format 7.)

Datum 2 (Format: num, length 4, format yymmdd10.)

 

Ich möchte das Datum1 in einen neue Spalte einfügen. Die neue Spalte (Datum 3) soll das gleiche Format haben wie Datum 2.

 

Danach möchte ich die Differenz (=Anzahl der Tage) ausrechnen zwischen der neuen Spalte "Datum 3" und "Datum 2". Das Ergebnis (Anzahl Tage) soll dann in eine weitere neue Spalte.

 

Danke für Eure Hilfe!!!

6 ANTWORTEN 6
Katrin1606
Fluorite | Level 6
Hallo,



2019-05-31



In dieser Spalte steht immer das gleiche Datum (Datum der Erstellung eines Reports). Aber in der Spalte Datum 2 stehen verschiedene Daten im Format 20190530.



Viele Grüße


CKothenschulte
Obsidian | Level 7

Meine Lösung geht davon aus, dass SAS beide Felder schon als Datum speichert bzw. erkennt.

 

data _null_;
  DATUM = '17apr2016'd;
  DATUM1 = '17apr2016'd;
  DATUM2 = '17apr2016'd;
  attrib DATUM format=ddmmyyp10.;
  attrib DATUM1 format=7.;
  attrib DATUM2 format=yymmdd10.;

  put _all_;

run;

DATUM=17.04.2016 DATUM1=20561 DATUM2=2016-04-17 _ERROR_=0 _N_=1
Kurt_Bremser
Super User

@Katrin1606  schrieb:
Hallo,



2019-05-31



In dieser Spalte steht immer das gleiche Datum (Datum der Erstellung eines Reports). Aber in der Spalte Datum 2 stehen verschiedene Daten im Format 20190530.



Viele Grüße



Also mit Format 7. kann NIE sowas rauskommen.

Zitat OP:

"Datum 1 (Format: num., length 8, format 7.)"

 

Was ist es jetzt, eine unformatierte Zahl (dann bitte den richtigen Wert angeben), oder eine Zahl mit YYMMDDD10.?

CKothenschulte
Obsidian | Level 7

Hallo @Katrin1606 ,

 

man benötigt eigentlich keine neue Spalte Datum3, da der Inhalt der Spalte gleich ist, nur das Format unterschiedlich ist.

Das Format kann man z.B. mit dem ATTRIB-Statement ändern.

Die Differenz zwischen zwei Tagen berechnet man am besten mit der INTCK-Funktion.

data TEST;

  DATUM1 = '17apr2016'd;
  DATUM2 = '28may2019'd;

  attrib DATUM2 format=yymmdd10.;

  Differenz = abs(INTCK("day",DATUM1,DATUM2));

run;

Viel Erfolg!

andreas_lds
Jade | Level 19

Das Format 7. ist für ein vollständiges Datum nicht ausreichend, im vierten Quartal gibt es insgesamt rund 60 Tage, die sich damit nicht korrekt darstellen lassen, wenn das Jahr vierstellig in der Zahl ist, aber davon gehe ich einfach mal aus.

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

Diskussionsstatistiken
  • 6 Antworten
  • 2901 Aufrufe
  • 1 Kudo
  • 4 in Unterhaltung