Когато се опитвате да видите какво трябва да прави Oracle, погледнете документация , „Номерът на юлианския ден е броят на дните от 1 януари 4712 г. пр.н.е.“
Тази формулировка изглежда предполага, че Юлиан 1 ще бъде един ден от 1 януари 4712 г. пр. н. е., с други думи 2 януари. Текущото прилагане на изчисляването на юлианската дата обаче е в сила от дълго време, като съществуващият код зависи от поведението . (Знам, че щяхме да се прецакаме, ако дефиницията на Джулиан, внедрена в Oracle, се промени.) На този етап би било най-много грешка в документацията да са дни след 31 декември 4713 г. пр.н.е.
РЕДАКТИРАНЕ Намерих референция тъй като 1 юли е 1 януари, в Ръководство за програмиста на интерфейса за обаждания . Не е някъде, където нормалните програмисти на база данни биха потърсили някога.
Следното обяснява годишната разлика между wikipedia и Oracle:
Случай 3 е новина за мен. Благодаря ви, че го повдигнахте. Не знам за референция, обхващаща това поведение. Свързани:
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
и
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
Очевидно несъществуващата година 0 е високосна.