2011年2月28日から12年2月29日までの月を見つけると、oracleのmonths_between関数は12を返します。実際には12.096である必要があります。この関数は、うるう年を適切に計算していません。
2011年2月28日から2012年2月29日までの期間は1年(12か月)と1日です。
select months_between('28-FEB-12', '28-FEB-11') from dual; -- 12
**select months_between('29-FEB-12', '28-FEB-11') from dual; -- 12**
select months_between('28-FEB-12', '27-FEB-11') from dual; -- 12.0322
select months_between('27-FEB-12', '28-FEB-11') from dual; -- 11.9677
これはOracleのバグですか??..
-ヴィシュワ