Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DateDiff

19 views
Skip to first unread message

Beginner

unread,
May 19, 2020, 1:57:59 AM5/19/20
to
StartDate = #1/1/2019#
EndDate = #12/31/2019#

Result = DateDiff("d", StartDate, EndDate)
Ergebnis 364 Tage
Sollte sein: 365 Tage

StartDate = #1/1/2020#
EndDate = #12/31/2020#
Schaltjahr
Ergebnis 365 Tage
Sollte sein: 366 Tage

Nun könnte ich ja einfach sagen:
Result = DateDiff("d", StartDate, EndDate +1)

Dann stimmen aber andere Berechnungen nicht.
StartDate = #1/1/2020#
EndDate = #1/02/2020#
Da habe ich dann einen Tag zu viel.

Wie führe ich eine exakte Tagesberechnung über mehrere Jahre mit beliebigem
Start- und Enddatum durch?

Mache ich einen Denkfehler?

Gruß

HR Ernst

unread,
May 19, 2020, 3:28:54 AM5/19/20
to
Da Office (Access und Excel) anscheinend jeweils von 0:00:00 Uhr ausgeht,
fehlt quasi ein Tag. Wenn man beim 31.12. 23:59 Uhr eingibt, bekommt man
die 365 bzw. 366 Tage. Bei deiner Einstellung musst du wohl jeweis den
Januar des nächsten Jahres nehmen, also vom 1.1.2020 und nicht vom
31.12.2019 den 1.1.2019 abziehen.
--
Gruß

HR Ernst

Ulf

unread,
May 19, 2020, 3:37:10 AM5/19/20
to
Hallo Beginner,
Am 19.05.2020 um 07:57 schrieb Beginner:
> StartDate = #1/1/2019#
> EndDate = #12/31/2019#
>
> Result = DateDiff("d", StartDate, EndDate)
> Ergebnis 364 Tage
> Sollte sein: 365 Tage
>
> StartDate = #1/1/2020#
> EndDate = #12/31/2020#
> Schaltjahr
> Ergebnis 365 Tage
> Sollte sein: 366 Tage
>
> Nun könnte ich ja einfach sagen:
> Result = DateDiff("d", StartDate, EndDate +1)

genau!

>
> Dann stimmen aber andere Berechnungen nicht.
> StartDate = #1/1/2020#
> EndDate = #1/02/2020#
> Da habe ich dann einen Tag zu viel.
>
> Wie führe ich eine exakte Tagesberechnung über mehrere Jahre mit beliebigem
> Start- und Enddatum durch?
>
> Mache ich einen Denkfehler?

Ja, denn es wird eine Differenz gebildet und 31-1 ist nun mal 30 und
nicht 31.
Das kannst Du ganz einfach in einer Excel-Tabelle probieren, die rechnet
nämlich logischerweise genau so. Schreib die Datumsangaben in zwei
Zellen und bilde in einer dritten die Differenz.



--
VG aus der Heide - Ulf
WIN 10 pro 64bit

Ulrich Möller

unread,
May 19, 2020, 3:48:07 AM5/19/20
to
Hallo Beginner,

Am 19.05.2020 um 07:57 schrieb Beginner:
> StartDate = #1/1/2019#
> EndDate = #12/31/2019#
>
> Result = DateDiff("d", StartDate, EndDate)
> Ergebnis 364 Tage
> Sollte sein: 365 Tage
>
>
> Mache ich einen Denkfehler?
Ja. DateDiff() gibt dir die Differenz an, nicht die Anzahl ganzer Tage!
Daraus folgt:
? Datediff("d", #01/01/2020#, #01/01/2020#) => Die Differenz beträgt 0
Tage, was ja auch richtig ist.
Wenn du also die Anzahl Tage für ein Jahr ermitteln möchtest, müßte das
so formuliert werden:
? Datediff("d", #01/01/2020#, #01/01/2021#) => 366 Tage

Ulrich

PS: die Netiquette verlangt eine gültige Mail-Adresse und anonyme
Beiträge sind auch nicht so toll.


Ulf

unread,
May 19, 2020, 3:54:24 AM5/19/20
to
Hallo,
Am 19.05.2020 um 09:28 schrieb HR Ernst:

> Da Office (Access und Excel) anscheinend jeweils von 0:00:00 Uhr ausgeht,
> fehlt quasi ein Tag. Wenn man beim 31.12. 23:59 Uhr eingibt, bekommt man
> die 365 bzw. 366 Tage. Bei deiner Einstellung musst du wohl jeweis den
> Januar des nächsten Jahres nehmen, also vom 1.1.2020 und nicht vom
> 31.12.2019 den 1.1.2019 abziehen.
>
Office speichert ein Datum als Zahl beginnend mit dem 1.1.1900 (=1). 1,5
wäre dann der 1.1.1900 12:00.
Schreib eine Zahl in eine Exceltabelle und ändere dann nur das Format
(Zelle formatieren) in der Kategorie Datum in ein Format mit Datum und
Uhrzeit. Dann siehst du den Effekt und verstehst, was Office bei
Differenzbildung macht.
1 1.1.00 0:00
2 2.1.00 0:00
2,5 2.1.00 12:00
2,7 2.1.00 16:48
43830 31.12.19 0:00
43830,8 31.12.19 19:12

Karl Donaubauer

unread,
May 19, 2020, 4:57:05 AM5/19/20
to
Hallo!

Am 19.05.2020 schrieb Ulf:
> ...
> Office speichert ein Datum als Zahl beginnend mit dem 1.1.1900 (=1). 1,5
> wäre dann der 1.1.1900 12:00.
> Schreib eine Zahl in eine Exceltabelle...
> ...
Obacht! Es gibt keine Office-weite Regelung. Der Tag 1 von Excel und
Access sind unterschiedlich. Access beginnt mit 30.12.1899 = 0. Der
1.1.1900 ist daher bei Access schon Tag Nr. 2.

--
Servus
Karl
*********
Access-Entwickler-Konferenz: http://donkarl.com/?AEK
Access FAQ: http://donkarl.com

Ulf

unread,
May 19, 2020, 5:00:01 AM5/19/20
to
Am 19.05.2020 um 10:57 schrieb Karl Donaubauer:
> Obacht! Es gibt keine Office-weite Regelung. Der Tag 1 von Excel und
> Access sind unterschiedlich. Access beginnt mit 30.12.1899 = 0. Der
> 1.1.1900 ist daher bei Access schon Tag Nr. 2.
>
Danke für den Hinweis.
0 new messages