sql >> Databáze >  >> RDS >> Oracle

Chyba Oracle 11.1 při převodu čísla juliánského dne na DATE nebo TIMESTAMP

Když se snažíte zjistit, co má Oracle dělat, podívejte se na dokumentace , "Juliánské číslo dne je počet dní od 1. ledna 4712 př.nl."

Zdá se, že tato formulace naznačuje, že Julian 1 by byl jeden den od 1. ledna 4712 př. n. l., jinými slovy 2. ledna. Současná implementace výpočtu juliánského data je však zavedena již dlouhou dobu, přičemž existující kód závisí na chování . (Vím, že bychom byli v háji, kdyby se definice Juliana implementovaná v Oracle změnila.) V tuto chvíli by šlo nanejvýš o chybu v dokumentaci, která uplynula od 31. prosince 4713 př.nl.

UPRAVIT Nalezen reference pro Juliana 1 je 1. leden v Příručce programátora rozhraní hovorů . Není to místo, kam by se normální databázoví programátoři někdy podívali.

Následující vysvětluje roční rozdíl mezi wikipedií a Oracle:

Případ 3 je pro mě novinka. Děkuji, že jste to uvedl. Nevím o žádném odkazu, který by toto chování pokrýval. Související:

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

a

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

Zjevně neexistující rok 0 je přestupný rok.



  1. Zdá se, že webová aplikace [] spustila vlákno s názvem [vlákno čištění opuštěného připojení] com.mysql.jdbc.AbandonedConnectionCleanupThread

  2. Jak získat hodnoty oddělené čárkami z databáze

  3. Problém s aktualizací entity pomocí jpa/hibernate

  4. Oracle SQL INNER Join založený na neodpovídajících hodnotách