Als je probeert te zien wat Oracle zou moeten doen, kijk dan eens naar Oracle's documentatie , "Een julians dagnummer is het aantal dagen sinds 1 januari 4712 v.Chr."
Die bewoording lijkt te impliceren dat Julian 1 één dag zou zijn sinds 1 januari 4712 v.Chr. . (Ik weet dat we zouden worden genaaid als de definitie van Julian die in Oracle is geïmplementeerd, zou veranderen.) Op dit moment zou het hoogstens een documentatiefout zijn om dagen sinds 31 december 4713 v.Chr. te zijn.
BEWERKEN Een referentie gevonden voor Julian 1 is 1 januari in Call Interface Programmer's Guide . Niet ergens waar normale databaseprogrammeurs ooit naar zouden kijken.
Het volgende verklaart het jaarverschil tussen wikipedia en Oracle:
Case 3 is nieuws voor mij. Bedankt dat je het naar voren hebt gebracht. Ik ken geen enkele referentie over dat gedrag. Gerelateerd:
SQL> select to_date('0001-01-01', 'YYYY-MM-DD')
- to_date ('-0001-12-31', 'SYYYY-MM-DD') from dual;
TO_DATE('0001-01-01','YYYY-MM-DD')-TO_DATE('-0001-12-31','SYYYY-MM-DD')
-----------------------------------------------------------------------
367
en
SQL> select months_between(to_date('0001-01-01', 'YYYY-MM-DD')
2 , to_date ('-0001-12-31', 'SYYYY-MM-DD')) from dual;
MONTHS_BETWEEN(TO_DATE('0001-01-01','YYYY-MM-DD'),TO_DATE('-0001-12-31','SYYYY-MM-DD'))
---------------------------------------------------------------------------------------
12.0322581
Blijkbaar is het niet bestaande jaar 0 een schrikkeljaar.