2.1k Aufrufe
Gefragt in Datenbanken von
Ich möchte die Differenz zweier Daten etwa wie folgt darstellen: "Noch 4 Jahre und 2 Monate und 5 Tage"

Wie ist die korrekte Formel ? Wer kann helfen ? Drdieter Danke.

[*][sup]Admininfo: Bitte vermeide Mehrfachanfragen in verschiedenen, bzw. gleichen Gruppen. Siehe FAQ 2.[/u][/sup]

5 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

Versuche es mal so:

=Datedif(Anfangsdatum;Enddatum;"y") & " Jahre " & Datedif(Anfangsdatum;Enddatum;"ym") & "Monate " & Datedif(Anfangsdatum;Enddatum;"md") & "Tage "

Erläuterung siehe hier

www.0711office.de/excel/funktionen/datedif.htm

Gruß

Helmut
0 Punkte
Beantwortet von
Lieber Helmut, ich danke für deinen Hinweis. Ich vergaß bei meiner Anfrage darauf hinzuweisen, dass mein Problem in Microsoft Access besteht und nicht in Excel. In Access bekam ich bei deinem Lösungsvorschlag immer eine Fehlermeldung.

Ich habe in Access im Berichtsentwurf folgendes gemacht !!

Zunächst habe ich das Problem im "Eigenschaftsblatt" beim "Steuerelement" so eingegeben. : = [morgiges Datum] - jetzt()

und in der Zeile "Format" darunter : jj" Jahre und "mm" Monate und "tt" Tage.

Als Ergebnis bekam ich folgendes: 1905 Jahre und 10 Monate und 5 Tage. soweit so gut. Nur wie bekomme ich die 1900 weg, so dass nur noch 5 Jahre wie korrekt übrigbleiben ?

Hast Du eine Lösung ? Danke Dieter
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Dieter,

leider iat das in Access nicht so einfach

bei:
zitat:
= [morgiges Datum] - jetzt()


müsste genau ein Tag rauskommen und nicht 5 Jahre und ...

Schau es mir übers Wochenende an, kann aber nichts versprechen (harte Nuß!).

Gruß

Paul1
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo Dieter,

Erstelle eine Tabelle:
Die Tabelle heißt "T1", Das Feld des Beginndatums heißt "A", Das Feld des Endedatums heißt "B", wobei das Feld B größer als das Feld A sein soll.

Erstelle eine Abfrage unter "neu" > Entwursansicht > das erscheinende Feld > schließen
>gehe in die SQL-Ansicht und füge folgenden Code ein:

SELECT T1.A, T1.B, DateDiff("yyyy",[A],[B])+(Format([A],"mmdd")>Format([B],"mmdd")) & " Jahre " & (Month([B])-Month([A])+(Day([A])>Day([B]))+12) Mod 12 & " Monate " & Day([B])-Day([A])+IIf(Day([A])>Day([B]),Day(DateSerial(Year([A]),Month([A])+1,0)),0) & " Tage" AS Methode2_AMonatTage
FROM T1
ORDER BY T1.A, T1.B;

Die Ausgabe erfolgt dan z.B.:
A= 01.01.201, B= 22.03.2014

3 Jahre 2 Monate 21 Tage

Gruß

Paul1

getestet mit Access 2003
0 Punkte
Beantwortet von paul1 Experte (4.9k Punkte)
Hallo zusammen,

Das ganze geht auch als Formel sowohl in der Abfrage unter "Aufbauen" als auch im Textfeld unter "Steuerelementinhalt" eines Berichtes oder Formulares:

=DatDiff("yyyy";[A];[B])+(Format([A];"mmdd")>Format([B];"mmdd")) & " Jahre " & (Monat([B])-Monat([A])+(Tag([A])>Tag([B]))+12) Mod 12 & " Monate " & Tag([B])-Tag([A])+Wenn(Tag([A])>Tag([B]);Wenn(Tag([A])>Tag(DatSeriell(Jahr([B]);Monat([B]);0));Tag([A]);Tag(DatSeriell(Jahr([B]);Monat([B]);0)));0)


Gruß

Paul1
...