Zeitdifferenz als Minutenangabe möglich?

Hallo,

ich habe wieder mal ein Problem zu lösen, weiß aber nach stundenlangem Suchen immer noch keinen Rat.
Weiß jemand wie ich aus zwei Daten (z.B. 10APR2008:14:25:58 und 10APR2008:14:26:46) die Differenz bekomme und diese dann als Zahl (Minutenanzahl hier 1) abspeichern kann?
Für Antworten bin ich sehr dankbar.

MFG Susanne

einfach so?

data _null_;
    von =
'10APR2008:14:25:58'dt;
    bis =
'10APR2008:14:26:46'dt;
    diff = (bis - von) /
60;
    
put diff=;
run;

Kommt darauf an...

Es kommt darauf an was man eigentlich genau berechnen will (angefangene Minuten, einfache Minutendifferenz, ...).
Siehe folgendes Beispiel:

data test;
    von =
'10APR2008:14:22:13'dt;
    bis =
'10APR2008:14:26:46'dt;
    diff = (bis - von) /
60;

    von2 = input(put(von,
datetime13.),datetime13.);
    bis2 = input(put(bis,
datetime13.),datetime13.);
    diff2 = (bis2 - von2) /
60;  *** einfache Minuten-Differenz ***;

    
diff3 = ceil(diff); *** angefangene Minuten ***;

proc print data=test;
  
format von bis von2 bis2 datetime20.;
run;

Noch eine Variante

Hallo,
man kann es auch noch "ordentlich" machen. Das direkte subtrahieren ist ja quasi Trick 17 und riecht (für mich) nach Assembler-Programmierung.
In SAS gibt es doch die schöne Funktion intck. Mit der kann man/frau wunderbar beliebige Zeitdifferenzen berechnen (lassen):

data test;
  anfzeit=
'10APR2008:14:22:13'dt;
  endzeit=
'10APR2008:14:26:46'dt;
  mindiff=intck (
"min", anfzeit, endzeit);
  secdiff=intck (
"sec", anfzeit, endzeit);  /* nur so zur Info */
  
hhdiff=intck ("hour", anfzeit, endzeit);  /* nur so zur Info */
  
/* noch ein Beispiel: */
  
anldat_V='20020304';                      /* Jahr Monat Tag, rückw.*/
  
auftdat ='20080415';                      /* Jahr Monat Tag, rückw.*/
  
daydiff=intck ( "day"                     /* nur so zur Info */
                
, input(anldat_V, yymmdd8.) /* input() erzeugt Wert */
                
, input(auftdat, yymmdd8.)  /* ... vom Typ datetime */
                
);
run;
proc print data=test;
  
format mindiff hhdiff secdiff time20.;
run;
Gruß

Hans Kneilmann, Schäfer Shop GmbH (SSI)

danke

danke, das ist echt einfach. ich habe es jetzt auch noch hinbekommen, aber nur sehr umständlich (Differenz im Format TOD. und dann im Format hhmmss., dann mittels der minute-funktion die Minuten ausgelesen und das dann als zahl abgespeichert). ich glaube, man denkt sich alles zu kompliziert.
MFG Susanne

DATETIME löst das Problem

Welches Format haben denn die ursprünglichen Variablen, die die beiden Angaben enthalten?
Wenn es sich um DATETIME-Variablen handelt, kann man einfach die Differenz bilden (Sekunden).

MfG
Christian