Erre is van megoldás?
Ha szigorúan matematikai alapon és a naptár jellegét veszem alapul, akkor nincs megoldás.
Hiszen egy szökőévben a
március 1 - február 28
kivonás eredménye = 2 nap kell, hogy legyen) míg nem szökőévben a
március 1 - február 28 = 1 nap
A dátumokat (a valóban dátumként értelmezett adatokat) a számítógép egyetlen lebegőpontos számként tárolja: mégpedig egy kinevezett alap-dátumhoz képest eltelt napok száma adja a szám egész részét, a tört része pedig az órákat, perceket, másodperceket (...) jelenti. Tehát egy dátum formátumú értékben MINDIG ott szerepel valamilyen ÉV adat is, még akkor is, ha a megjelenítési formátumban ezt nem is engedélyezed (yyyy-mm-dd = mm-dd; csak a yyyy nem látszik!)
Persze, ha külön tárolod a dátum egyes "helyi értékeit"
| év | hó | nap| ;
vagy többszörös adatátalakítással
(dátum -> szöveg átalakítás után
"év" szövedrész levágása, majd
szöveg -> dátum átalakítás, melynek során 1899 alap év-értékkel újra valódi dátum lesz a két operandusodból, de már azonos év értékkel,)
akkor elvégezheted a kivonást, de az eredmény vagy a te konverzióid számítási módszerétől, vagy az alapdátum évének (vagy ha nem az alapévre konvertálsz, akkor a közös év érték) jellemzőitől fog függni (hogy az éppen szökőév-e, vagy sem)
Ráadásul ahogy a különböző táblázatkezelő programok, úgy gondolom az adatbázis kezelő programok is sajnos nem is egyetlen, azonos alapdátumot használnak, hanem többfélét. Az OpenOffice, LibreOffice is tud legalább háromfélét kezelni.
1899. dec. 30. (alapértelmezés)
1900. jan 1. (StarCalc1.0 kompatibilis)
1904. jan.1.
azaz: ez a dátumérték adja a lebegőpontos szám zéró értékét, ehhez képest a régebbi dátumokat negatív értékű számként tárolja a gép.
Ugyan többségében "Calc" témák voltak, de érdemes elolvasni:
http://user.services.openoffice.org/hu/ ... 148&p=5468
http://user.services.openoffice.org/hu/ ... 147&p=5455
http://user.services.openoffice.org/hu/ ... 132&p=5393
http://user.services.openoffice.org/hu/ ... 132&p=5390
... és még kereshetsz hasonló témákat...