sql >> Databasteknik >  >> RDS >> Oracle

Månader mellan att inte returnera korrekt värde

Du har fel. MONTHS_BETWEEN behandlar tidsspannet från date '2017-02-28' till date '2017-03-28' som exakt en månad (samma dag i två angränsande månader). Detta kan läsas i dokumenten:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm

Ett datum är större än det andra så du får ett positivt eller negativt tal (dvs inte noll) beroende på vilken som är första och vilken som är andra parametern, och eftersom dagarna är lika blir resultatet ett heltal. Det är 1 eller -1 för angränsande månader.

Månadsberäkning är ändå en märklig sak, då en månad inte är ett definierat tidsintervall. Du verkar ha en viss definition i åtanke, som helt enkelt skiljer sig från hur MONTHS_BETWEEN definierar det. Inget fel med det. Jag håller med MONTHS_BETWEEN I detta fall; från 28 februari till 28 mars är "exakt" en månad. Om du vill ha andra regler, använd då din egen matematik :-)



  1. Hur skriver du ut resultatet av en PostgreSQL-fråga i CSV- eller TSV-format från kommandoraden?

  2. MySQL GUI-program

  3. hur ersätter den accentuerade bokstaven i en varchar2-kolumn i Oracle

  4. postgresql databasdesign för e-handel