Разница годов&месяцев между двумя датами

Lotus
Дата: 29.07.2005 09:48:42
Всем привет !!!
У меня здесь возникла некая необходимость подсчитать количество лет и месяцев между 2 датами, результат в виде "2 year 5 month"
p.s. На Oracle8i !!!!!!!!!!

Вот мой вариант, но мне он кажется несколько громозким, нет ли у кого иных идей на сей счёт ???
SQL> select
  2   floor(months_between(sysdate,to_date('02.03.2003'))/12)||' year '||
  3   floor(mod(months_between(sysdate,to_date('02.03.2003')),12))||' month' dat
  4  from dual;

DAT
--------------------------------------------------------------------------------
2 year 4 month
use-se
Дата: 29.07.2005 10:02:10
MONTHS_BETWEEN returns number of months between dates date1
 and date2. If date1 is later than date2, then the result is positive. If date1 is 
earlier than date2, then the result is negative. If date1 and date2 are either the 
same days of the month or both last days of months, then the result is always an 
integer. Otherwise Oracle calculates the fractional portion of the result based on a 
31-day month and considers the difference in time components date1 and date2.

Examples
The following example calculates the months between two dates:

SELECT MONTHS_BETWEEN 
   (TO_DATE('02-02-1995','MM-DD-YYYY'),
    TO_DATE('01-01-1995','MM-DD-YYYY') ) "Months"
    FROM DUAL;

    Months
----------
1.03225806

use-se
Дата: 29.07.2005 10:06:06
пардон лоханулся
Elic
Дата: 29.07.2005 10:18:12
Lotus
но мне он кажется несколько громозким
IMHO, проще по сути не написать.
До кучи: Как получить точный интервал с MONTHS_BETWEEN, если дни совпадают
classn
Дата: 29.07.2005 10:26:31
На основе MONTHS_BETWEEN
SELECT FLOOR((ABS(MM))/12)||' year '||
TO_CHAR(FLOOR(ABS(MM))-12*FLOOR((ABS(MM))/12))||' month' Dat
FROM (SELECT MONTHS_BETWEEN(TO_DATE('02-02-1998','MM-DD-YYYY'),
TO_DATE('01-01-1995','MM-DD-YYYY') ) MM FROM DUAL)
Lotus
Дата: 29.07.2005 10:53:08
Да, тоже неплохой вариант... Думается, что принципиально иное придумать не получется, а жаль ...