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

Miesiące między nie zwracaniem prawidłowej wartości

Mylisz się. MONTHS_BETWEEN traktuje przedział czasu od date '2017-02-28' do date '2017-03-28' dokładnie jeden miesiąc (ten sam dzień w dwóch sąsiednich miesiącach). Można to przeczytać w dokumentacji:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Jedna data jest większa od drugiej, więc otrzymujesz liczbę dodatnią lub ujemną (tzn. nie zero) w zależności od tego, który parametr jest pierwszy, a który drugi, a ponieważ dni są równe, wynik będzie liczbą całkowitą. To jest 1 lub -1 dla sąsiednich miesięcy.

Obliczanie miesiąca i tak jest dziwne, ponieważ miesiąc nie jest zdefiniowany. Wygląda na to, że masz na myśli pewną definicję, która po prostu różni się od sposobu, w jaki MONTHS_BETWEEN definiuje to. Nic w tym złego. Zgadzam się z MONTHS_BETWEEN w tym przypadku; od 28 lutego do 28 marca to „dokładnie” jeden miesiąc. Jeśli chcesz mieć inne zasady, zastosuj własną matematykę :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak znaleźć różnicę między znacznikiem czasu w Oracle?

  2. zła liczba lub typy argumentów podczas wywoływania Stored Proc

  3. Jak sprawdzić, czy klient Oracle jest zainstalowany lub nie jako warunek wstępny instalacji komponentu?

  4. Pytanie PreparedStatement w Javie przeciwko Oracle

  5. Pobieranie i wyświetlanie danych z bazy danych Oracle