title image


Smiley Warum, die Function macht doch genau das, was Du eingibst ...
Mit "YYYY" ermittelst Du die Jahre zwischen zwei Daten, also gemäß Deinem ersten Beispiel ...

01.01.1990 - 01.01.2000 ==> 10 Jahre

01.01.1990 - 31.12.1999 ==> 9 Jahre

Und von 1987 bis 2004 sind es halt 17 Jahre.



Nun musst Du nur noch ein wenig Gehirnschmals einsetzen ... Wenn der Monat des Startdatums größer ist als der Monat des Endedatums, dann muss man die Jahresangabe um 1 reduzieren. Ist der Monat gleich, dann muss man halt den Tag noch mit zum Vergleich hinzuziehen. Dazu kannst du die Funktionen Month() und Day() benutzen.



Oder Du ermittelst die Monate per DateDiff("m", ...) und erhälst in Deinem Beispielcode 202 Monate zurück. Den Wert durch 12 Teilen (=16,8333), damit hast Du dann schon die 16 Jahre; den ganzen Anteil ziehts Du vom Ergebnis ab (=0,8333), diesen Wert mit 12 multiplizieren und Du erhälst 10 Monate. Dabei hast Du allerdings auch das Problem mit der mgl. 1er-Differenz bei der Monatsanzahl (wenn der Endedatum-Tag vor dem Anfangdatum-Tag liegt).



Merke: Ein Programm macht immer das, was man ihm sagt, nicht was man will! ;-)



[Edit]

Und hier noch ein Auszug aus der Onlinehilfe ...

Wird der 31. Dezember mit dem 1. Januar des unmittelbar folgenden Jahres verglichen, gibt DateDiff für Jahr ("yyyy") den Wert 1 zurück, obwohl nur ein Tag vergangen ist.

[/Edit]



Gruss








scotty

I´m an admin. If you see me laughing, you should better have a backup.
Einen Fehler machen und ihn nicht korrigieren - das erst heisst wirklich einen Fehler machen.
Konfuzius


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: