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

Měsíce mezi nevrácením správné hodnoty

Mýlíš se. MONTHS_BETWEEN zpracovává časové rozpětí od date '2017-02-28' do date '2017-03-28' jako přesně jeden měsíc (stejný den ve dvou sousedních měsících). To si můžete přečíst v dokumentech:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Jedno datum je větší než druhé, takže dostanete kladné nebo záporné číslo (tj. ne nulu) podle toho, který je první a který druhý parametr, a když se dny rovnají, výsledkem bude celé číslo. To je 1 nebo -1 pro sousední měsíce.

Výpočet měsíce je každopádně zvláštní věc, protože měsíc není definované časové rozpětí. Zdá se, že máte na mysli určitou definici, která se prostě liší od MONTHS_BETWEEN to definuje. Na tom není nic špatného. Souhlasím s MONTHS_BETWEEN v tomto případě; od 28. února do 28. března je "přesně" jeden měsíc. Pokud chcete jiná pravidla, použijte vlastní matematiku :-)



  1. savepoint commit rollback v mysql

  2. MYSQL vybírá narozeniny na základě věkového rozmezí

  3. Mysql JOIN čtyř tabulek se dvěma klíčovými tabulkami

  4. Jak nahrát obrázky do databáze MySQL pomocí kódu PHP