Oracle
 sql >> база данни >  >> RDS >> Oracle

Грешка в Oracle 11.1, преобразуваща номера на юлианския ден в ДАТА или TIMESTAMP

Когато се опитвате да видите какво трябва да прави 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 е високосна.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.5 - декодиране/избор на случай за разрешаване на грешка с utf8 не работи

  2. Oracle 10g/11g за Mac

  3. Най-добрата заявка за достигане на индекс на Oracle със свързвания и нулеви стойности

  4. Поток за влизане в R12.2 и основно отстраняване на неизправности

  5. oracledb верижно sql повикване с помощта на обещания