Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Months_between

Re: Months_between

From: Michal Zaschke <zaschke_at_suas.cz>
Date: Mon, 16 Oct 2000 10:04:14 +0200
Message-Id: <10651.119289@fatcity.com>


"Months_between" counts the months between two dates. If both the days are the LAST of the month or the days ('DD') are the same, it returns an INTEGER value otherwise it calculates with days and returns the REAL number.

  1. '28/02/2001','28/11/2000' - the second day is not the last of the month, so it compares '28' from the first date and '28' from the second one. They are the same, so it will return an integer value as number of months between 11/2000 and 02/2001
  2. '28/02/2001','29/11/2000' - the second day is not the last of the month, so it compares '28' and '29'. They are different, so the function will return a real number calculating with days between date1 and date2.
  3. '28/02/2001','30/11/2000' - both the days are the last of their months, so the function will return an integer number as a difference between 11/2000 and 02/2001
  4. '28/02/2000','28/11/1999' - same as A.
  5. '28/02/2000','29/11/1999' - same as B.
  6. '28/02/2000','30/11/1999' - same as B. (Note: the last day of February 2000 is '29/02/2000'!)

HTH
      Mike

John Phan wrote:
>
> Hi,
> I've got some problems with my application. I have used "months_between"
> function of Oracle to calculate number of month between two days, but I
> really do not understand why the result is so strange.
> Could you explain to me what happend as follows:
>
> SQL> select months_between('28/02/2001','28/11/2000') from dual;
>
> MONTHS_BETWEEN('28/02/2001','28/11/2000')
> -----------------------------------------
> 3
>
> SQL> select months_between('28/02/2001','29/11/2000') from dual;
>
> MONTHS_BETWEEN('28/02/2001','29/11/2000')
> -----------------------------------------
> 2.9677419
>
> SQL>select months_between('28/02/2001','30/11/2000') from dual;
>
> MONTHS_BETWEEN('28/02/2001','30/11/2000')
> -----------------------------------------
> 3
>
> SQL>select months_between('28/02/2000','28/11/1999') from dual;
>
> MONTHS_BETWEEN('28/02/2000','28/11/1999')
> -----------------------------------------
> 3
>
> SQL>select months_between('28/02/2000','29/11/1999') from dual;
>
> MONTHS_BETWEEN('28/02/2000','29/11/1999')
> -----------------------------------------
> 2.9677419
>
> SQL>select months_between('28/02/2000','30/11/1999') from dual;
>
> MONTHS_BETWEEN('28/02/2000','30/11/1999')
> -----------------------------------------
> 2.9354839
>
> Thanks for your help,
>
> John.
> _________________________________________________________________________
> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com.
>
> Share information about yourself, create your own public profile at
> http://profiles.msn.com.
>
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.com
> --
> Author: John Phan
> INET: johnphanz_at_hotmail.com
>
> Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
> San Diego, California -- Public Internet access / Mailing Lists
> --------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from). You may
Received on Mon Oct 16 2000 - 03:04:14 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US