PDA

View Full Version : SUBDUR oder auch %DIFF



Peet
22-01-08, 18:15
Hallo zusammen,

ich errechne die Differenz zweier Datumsfelder in Monaten:

datum1 subdur datum2 monate:M
oder auch
eval monate = %diff(datum1:datum2:*M)

Beispiel
datum1 = 31.03.2008
datum2 = 01.01.2008

Jetzt ergibts das doch tatsächlich 2 Monate !?!
Ich hätte jetzt 3 erwartet, der Anwender auch !!!
Mache ich etwas falsch oder sehe ich das nur falsch ?

Natürlich, streng gerechnet sind das keine vollen 3 Monate, liegt es daran ?

Bitte um eure Hilfe !

Danke
peet

Fuerchau
22-01-08, 19:07
Genau!
Immerhin fehlt da ja noch ein Tag und das Ergebnis wird abgeschnitten.

3 - 1 ist ja auch nicht 3 sondern 2.

Du musst halt 1 Tag dazunehmen, wenn du "inclusiv" rechnen willst:

%diff(Datum1 + %days(1) : Datum2 : *M)

B.Hauser
22-01-08, 20:09
Bei der Datums- und Zeitrechnung wird in RPG niemals gerundet, sondern immer abgeschnitten.
Dabei wird nur die Ergebnis-Einheit und die höheren Einheiten berücksichtigt. In Deinem Fall wird also nur das Jahr und der Monat berücksichtigt.

Die Differenz von 2008/03 - 2008/01 beträgt 2

Der folgende Absatz stammt aus der RPG Reference (Built-in-Functionn %DIFF)


The difference is calculated by subtracting the second operand from the first.
The result is rounded down, with any remainder discarded. For example, 61 minutes is equal to 1 hour, and 59 minutes is equal to 0 hours.

Birgitta