3

2 つの日付間の年数を計算したい。

例:-Select to_date('30-OCT-2013') - TO_date('30-SEP-2014') FROM DUAL;

これは 335 日になります。これを何年にもわたって示したいと思い.97ます。

4

3 に答える 3

4

これを行うだけです( 365.242199で割ります):

Select (to_date('30-SEPT-2014') - TO_date('30-OCT-2013'))/365.242199 FROM DUAL;

1 年 = 365.242199 日

また

MONTHS_BETWEENを使用してこのようなことを試してください:-

select floor(months_between(date '2014-10-10', date '2013-10-10') /12) from dual;

または、これを試すこともできます:-

SELECT EXTRACT(YEAR FROM date1) - EXTRACT(YEAR FROM date2) FROM DUAL;

補足:-

335/365.242199 = 0.917199603 であり、.97 ではありません

于 2013-09-30T17:45:21.143 に答える
1

それが.97年であるとあなたがどのように考えているのか私にはわかりません。ここに私が得るものがあります:

SQL> SELECT  ( TO_date('30-SEP-2014') - to_date('30-OCT-2013')) /
                (ADD_MONTHS(DATE '2013-10-30',12) - DATE '2013-10-30') "Year Fraction" 
       FROM DUAL;

Year Fraction
-------------
0.91780821917

年の計算の基礎となる日付を選択する必要があります。これは 1 つの方法です。2013 年 10 月 30 日から 2014 年 10 月 30 日までの日数を 1 年とすることにしました。2013 年 9 月 30 日から 2014 年 9 月 30 日までの 1 年にすることもできます。

余談ですが、小数点以下 2 桁だけに関心がある場合、365 は 366 とほとんど同じです。

更新: 分母の計算に ADD_MONTHS を使用しました。そうすれば、1 年の日数の計算全体に同じ日付を使用できます。

于 2013-09-30T18:07:43.287 に答える