sql >> Base de Datos >  >> RDS >> Oracle

Meses entre no devolver el valor correcto

Está usted equivocado. MONTHS_BETWEEN trata el lapso de tiempo desde date '2017-02-28' hasta date '2017-03-28' como exactamente un mes (mismo día en dos meses adyacentes). Esto se puede leer en los documentos:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Una fecha es más grande que la otra, por lo que obtiene un número positivo o negativo (es decir, no cero) dependiendo de cuál es el primero y cuál es el segundo parámetro, y como los días son iguales, el resultado será un número entero. Eso es 1 o -1 para meses adyacentes.

El cálculo del mes es algo extraño de todos modos, ya que un mes no es un período de tiempo definido. Parece que tienes una determinada definición en mente, que simplemente es diferente de cómo MONTHS_BETWEEN lo define. No hay nada de malo en eso. Estoy de acuerdo con MONTHS_BETWEEN en este caso; del 28 de febrero al 28 de marzo es "exactamente" un mes. Si quieres reglas diferentes, aplica tus propias matemáticas :-)