Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Monate zwischen der Rückgabe des korrekten Werts

Sie liegen falsch. MONTHS_BETWEEN behandelt die Zeitspanne ab date '2017-02-28' bis date '2017-03-28' als genau ein Monat (gleicher Tag in zwei aufeinanderfolgenden Monaten). Dies kann in den Dokumenten nachgelesen werden:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Ein Datum ist größer als das andere, sodass Sie eine positive oder negative Zahl (d. h. nicht Null) erhalten, je nachdem, welcher der erste und welcher der zweite Parameter ist, und da die Tage gleich sind, ist das Ergebnis eine Ganzzahl. Das ist 1 oder -1 für angrenzende Monate.

Die Monatsberechnung ist sowieso eine seltsame Sache, da ein Monat keine definierte Zeitspanne ist. Sie scheinen eine bestimmte Definition im Sinn zu haben, die sich einfach von MONTHS_BETWEEN unterscheidet definiert es. Daran ist nichts falsch. Ich würde MONTHS_BETWEEN zustimmen in diesem Fall; vom 28. Februar bis 28. März ist "genau" ein Monat. Wenn Sie andere Regeln wollen, dann wenden Sie Ihre eigene Mathematik an :-)