sql >> Database >  >> RDS >> Oracle

Maanden tussen het niet retourneren van de juiste waarde

Je hebt ongelijk. MONTHS_BETWEEN behandelt de tijdspanne vanaf date '2017-02-28' tot date '2017-03-28' als precies één maand (dezelfde dag in twee aangrenzende maanden). Dit is te lezen in de docs:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

De ene datum is groter dan de andere, dus je krijgt een positief of negatief getal (d.w.z. niet nul), afhankelijk van welke de eerste en de tweede parameter is, en aangezien de dagen gelijk zijn, is het resultaat een geheel getal. Dat is 1 of -1 voor aangrenzende maanden.

Maandberekening is sowieso vreemd, aangezien een maand geen gedefinieerde tijdspanne is. Je lijkt een bepaalde definitie in gedachten te hebben, die gewoon anders is dan hoe MONTHS_BETWEEN definieert het. Daar is niets mis mee. Ik ben het eens met MONTHS_BETWEEN in dit geval; van 28 februari tot 28 maart is "precies" een maand. Als je andere regels wilt, pas dan je eigen wiskunde toe :-)



  1. DROP TABLE-instructie in SQL Server begrijpen

  2. Update specifieke records van MySQL-tabel

  3. PHP bindParam lijkt niet te werken met een PARAM_INT out parameter

  4. Is het gebruik van Dev/Test RDS een slecht idee voor uw project boven Production RDS?