4.9k Aufrufe
Gefragt in Datenbanken von
Hallo,

ich möchte in Access das Eintritts-Datum und das Austritts-Datum in der Abfrage voneinander abziehen und das Ergebnis in Jahre und Monate anzeigen lassen.
Einen Schritt kenne ich schon, wie nachfolgend

DatDiff("jjjj";[Eintritt-B];[Austritt-B])

aber beim Ergebnis wird nur das Jahr angezeigt.

Was kann ich ändern, damit Jahr und Monat angezeigt wird.

Vielen Dank für jegliche Unterstützung.

7 Antworten

0 Punkte
Beantwortet von snoopie Experte (3.2k Punkte)
Hallo Sephora,

unter folgender URL findest Du eine Beschreibung der Datediff-Funktion:
www.techonthenet.com/access/functions/date/datediff.php

Danach sollte es möglich sein, mit einer zweiten Abfrage, wo "m" statt "jjjj" angegeben wird, die Monate zu ermitteln.

Wenn Du einfach mal nach "access datediff" googelst, bekommtst Du jede Menge Hinweise und Beispiele zur Lösung Deines Problems.

Gruss,
Snoopie
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Sephora,

Warten wir es ab, ob es direkt in Access gelingt, ansonsten würde ich Excel eine Chance geben die Berechnungen durchzuführen (Analyse) mit anschließendem verknüpften Import nach Access.

z.B. die Formel in Excel:

=DATEDIF(A2;B2;"y")&" Jahre; "&DATEDIF(A2;B2;"ym")&" Monate"

In der Hoffnung die Frage richtig verstanden zu haben.

Gruß

Paul1

Excel/Access 2003
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Sephora,

wie wäre es mit
DatDiff('jjjj';[Eintritt-B];[Austritt-B]) & " Jahre und " & DatDiff('m';[Eintritt-B];[Austritt-B]) Mod 12 & " Monate"

wenn man die Tage im Monat nicht näher betrachtet.

Gruß
Ralf
0 Punkte
Beantwortet von sephora Einsteiger_in (11 Punkte)
Hallo Ralf,

vielen vielen Dank! Deine Antwort hat mir sehr geholfen!

Gruß

Sephora
0 Punkte
Beantwortet von
Hallo Ralf,

die Berechnung funktioniert sehr gut, nur hat die richtige Sortierung nach aufsteigend nach Jahr und Monate einen Haken.

Es zeigt folgendes an, wenn man Sortierung anklickt oder es über den Bericht ausdrucken möchte:

0 Jahre und 1 Monate
0 Jahre und 11 Monate
0 Jahre und 2 Monate
0 Jahre und 3 Monate
0 Jahre und 4 Monate
0 Jahre und 5 Monate
0 Jahre und 6 Monate
0 Jahre und 7 Monate
0 Jahre und 8 Monate
0 Jahre und 9 Monate

1 Jahre und 0 Monate
10 Jahre und 11 Monate
1 Jahre und 2 Monate
1 Jahre und 3 Monate
1 Jahre und 4 Monate
1 Jahre und 5 Monate
1 Jahre und 6 Monate
1 Jahre und 7 Monate

10 Jahre und 1 Monate
10 Jahre und 2 Monate
10 Jahre und 3 Monate
10 Jahre und 4 Monate

11 Jahre und 1 Monate
11 Jahre und 2 Monate
11 Jahre und 3 Monate
11 Jahre und 4 Monate

13 Jahre und 1 Monate
13 Jahre und 2 Monate
13 Jahre und 3 Monate
13 Jahre und 4 Monate

15 Jahre und 1 Monate
15 Jahre und 2 Monate
15 Jahre und 3 Monate
15 Jahre und 4 Monate

2 Jahre und 0 Monate
2 Jahre und 10 Monate
2 Jahre und 11 Monate
2 Jahre und 2 Monate
2 Jahre und 3 Monate
2 Jahre und 4 Monate

Wie kann hier die Sortierung korrekt gemacht werden?
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo sephora,

füge in deine Abfrage ein

order by DatDiff('jjjj';[Eintritt-B];[Austritt-B]) & rechts("0" & DatDiff('m';[Eintritt-B];[Austritt-B]) Mod 12;2)

ein.
0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
sorry, korrektur:

order by rechts("0000" & DatDiff('jjjj';[Eintritt-B];[Austritt-B]);4) & rechts("0" & DatDiff('m';[Eintritt-B];[Austritt-B]) Mod 12;2)

oder mit

order by Zinteger(DatDiff('jjjj';[Eintritt-B];[Austritt-B])), ZInteger(DatDiff('m';[Eintritt-B];[Austritt-B]) Mod 12)


Gruß
Ralf
...