Saat mencoba melihat apa yang seharusnya dilakukan Oracle, lihat dokumentasi , "Angka hari Julian adalah jumlah hari sejak 1 Januari 4712 SM."
Kata-kata itu memang menyiratkan bahwa 1 Julian akan menjadi satu hari sejak 1 Januari 4712 SM, dengan kata lain 2 Januari. Namun penerapan perhitungan tanggal Julian saat ini telah ada sejak lama, dengan kode yang ada tergantung pada perilakunya. . (Saya tahu kita akan kacau jika definisi Julian yang diterapkan di Oracle berubah.) Pada titik ini, paling banyak bug dokumentasi akan menjadi beberapa hari sejak 31 Desember 4713 SM.
EDIT Menemukan referensi untuk 1 Juli menjadi 1 Januari, di Panduan Programmer Antarmuka Panggilan . Bukan tempat yang pernah dilihat oleh programmer database biasa.
Berikut ini menjelaskan perbedaan tahun antara wikipedia dan Oracle:
Kasus 3 adalah berita bagi saya. Terima kasih telah mengangkatnya. Saya tidak tahu ada referensi yang mencakup perilaku itu. Terkait:
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
dan
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
Rupanya tahun 0 yang tidak ada adalah tahun kabisat.