Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mois entre ne pas renvoyer la valeur correcte

Vous avez tort. MONTHS_BETWEEN traite l'intervalle de temps à partir de la date '2017-02-28' au date '2017-03-28' exactement comme un mois (le même jour dans deux mois consécutifs). Cela peut être lu dans les docs :https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Une date est plus grande que l'autre, vous obtenez donc un nombre positif ou négatif (c'est-à-dire non nul) selon le premier et le deuxième paramètre, et comme les jours sont égaux, le résultat sera un entier. C'est 1 ou -1 pour les mois adjacents.

Le calcul du mois est une chose étrange de toute façon, car un mois n'est pas un laps de temps défini. Vous semblez avoir une certaine définition en tête, qui est tout simplement différente de la façon dont MONTHS_BETWEEN le définit. Rien de mal à cela. Je suis d'accord avec MONTHS_BETWEEN dans ce cas; du 28 février au 28 mars, c'est "exactement" un mois. Si vous voulez des règles différentes, appliquez vos propres calculs :-)