Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Błąd Oracle 11.1 konwertujący numer dnia juliańskiego na DATE lub TIMESTAMP

Próbując zobaczyć, co ma zrobić Oracle, spójrz na dokumentacja , „Liczba dni juliańskich to liczba dni od 1 stycznia 4712 r. p.n.e.”

To sformułowanie wydaje się sugerować, że Julian 1 będzie jednym dniem od 1 stycznia 4712 pne, innymi słowy 2 stycznia. Jednak obecna implementacja obliczania daty juliańskiej istnieje od dłuższego czasu, z istniejącym kodem zależnym od zachowania . (Wiem, że bylibyśmy spieprzeni, gdyby definicja Juliana zaimplementowana w Oracle miała się zmienić.) W tym momencie byłby to co najwyżej błąd dokumentacji, który miał miejsce od 31 grudnia 4713 r. p.n.e.

EDYTUJ Znaleziono odniesienie dla Juliana 1 jest to 1 stycznia, w Przewodniku programisty interfejsu wywołań . W żadnym miejscu normalni programiści baz danych nigdy by nie spojrzeli.

Poniżej wyjaśniono różnicę lat między Wikipedią a Oracle:

Przypadek 3 to dla mnie nowość. Dziękuję, że to poruszyłaś. Nie znam żadnego odniesienia obejmującego takie zachowanie. Powiązane:

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

i

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

Najwyraźniej nieistniejący rok 0 jest rokiem przestępnym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chcesz wziąć różnicę dwóch kolumn w Sql

  2. oracle diff:jak porównać dwie tabele?

  3. Uzyskaj dostęp do kursora dynamicznie według nazwy kolumny

  4. Błąd w procedurze składowanej Oracle

  5. Niekończące się okresowe odzyskiwanie uczestników heurystycznych