Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lỗi Oracle 11.1 khi chuyển đổi số ngày Julian thành DATE hoặc TIMESTAMP

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

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa ký hiệu cộng (+) của Oracle và ký hiệu ansi JOIN?

  2. Oracle:cách CHÈN nếu một hàng không tồn tại

  3. Oracle SQL - DENSE_RANK

  4. Oracle - xóa tất cả các bản ghi con cho cha mẹ

  5. Khôi phục trong PLSQL Exception