Khi cố gắng xem Oracle phải làm gì, hãy xem tài liệu , "Số ngày Julian là số ngày kể từ ngày 1 tháng 1 năm 4712 trước Công nguyên."
Cách diễn đạt đó ngụ ý rằng Julian 1 sẽ là một ngày kể từ ngày 1 tháng 1 năm 4712 trước Công nguyên, hay nói cách khác là ngày 2 tháng 1. Tuy nhiên, việc triển khai tính toán ngày Julian hiện tại đã được thực hiện từ lâu, với mã hiện có tùy thuộc vào hành vi . (Tôi biết rằng chúng ta sẽ gặp rắc rối nếu định nghĩa về Julian được triển khai trong Oracle thay đổi.) Tại thời điểm này, nhiều nhất sẽ là một lỗi tài liệu kể từ ngày 31 tháng 12 năm 4713 trước Công nguyên.
CHỈNH SỬA Đã tìm thấy tham chiếu cho Julian 1 là ngày 1 tháng 1, trong Hướng dẫn của lập trình viên giao diện cuộc gọi . Không phải nơi nào đó mà các lập trình viên cơ sở dữ liệu bình thường sẽ nhìn vào.
Phần sau giải thích sự khác biệt về năm giữa wikipedia và Oracle:
Trường hợp 3 là tin tức đối với tôi. Cảm ơn bạn đã đưa nó lên. Tôi không biết bất kỳ tài liệu tham khảo nào liên quan đến hành vi đó. Có liên quan:
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
và
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
Rõ ràng năm 0 không tồn tại là một năm nhuận.