Anmelden

View Full Version : Jahr in Datum ersetzen (SUBDT)



Seiten : 1 [2]

Pikachu
15-09-15, 18:14
Wie ist das mit dem letzten Tag im Februar bei Schaltjahren?

Fuerchau
15-09-15, 18:39
Wenn man vom 1.3.nnnn einen Tag abzieht erhält man den 28/29.2.nnnn.

B.Hauser
15-09-15, 18:56
Wie ist das mit dem letzten Tag im Februar bei Schaltjahren?

Die Regel ist die, es wird immer versucht den gleichen Tag zu verwenden. Sollte dieser Tag in dem "neuen" Datum nicht vorhanden sein, wird immer der Monatsletzte genommen.

Wenn also das Ausgangsdatum der 28.02. ist, ist das Ziel-Datum wieder ein 28.02. unabhängig davon, ob das Ausgangsdatum ein Monatsende war oder nicht.
Wenn das Ausgangsdatum der 29.02. ist und dieser in dem Ziel-Jahr nicht existiert, ist das Ziel-Datum der 28.02.

Birgitta

Fuerchau
16-09-15, 08:29
Die Begründung für dieses Verhalten liegt einfach daran, dass ein Datum in Anzahl Tage seit x umgerechnet und dann wieder in ein Datum konvertiert wird.
Es gibt dann nur Überlaufprobleme wenn weniger als der 1.1.0001 und mehr als der 31.12.9999 rauskommt.

camouflage
16-09-15, 09:07
Also, die Methoden von Baldur und Birgitta funktionieren. Ich seh ja ein, dass so trivial das Ganze nicht ist, da u.U. ein ungültiges Datum raus kommen könnte. Stichwort 29.2.2015!!!. Insofern ist das Rechnen vom Datum schlüssig.

Allerdings, und das hat der Test auch ergeben, wenn schon ein Datum (z.B. Char to Date) konvertiert wird: IMMER unter MONITOR! Weil, hier geht das mit dem 29.2.2015 und den RNQ0112 haste dann auch gleich um die Ohren.

So, und nun hab ich genug vom Thema, nochmals Danke an die Postings. :-)

Fuerchau
16-09-15, 12:28
Nun ja, rein technisch gesehen kann nur in Nicht-Date-Felder der 29.2.2015 vorkommen!
In Date-Feldern wird generell 1.1.0001 bis 31.12.9999 unterstützt.
Nur bei DateToChar, %char(MyDate:*Fmt), gibt's einen Fehler bei 2-stelligen Jahren wenn das Jahr nicht zwischen 1940 und 2039 liegt.