web-dev-qa-db-ja.com

Oracle Date-年を日付に追加する方法

日付フィールドがあります

DATE = 10/10/2010

合計= 4(これは計算による年数です)

10/10/2010に4年を追加して10/10/2014にする方法はありますか?

27
kalls

代わりに月(12 *年数)を追加してみてください。このような-

add_months(date'2010-10-10', 48)
48
sgowd

_add_months_を使用

例:

_SELECT add_months( to_date('10-OCT-2010'), 48 ) FROM DUAL;
_

警告
add_months。最初の月の最終日を入力すると、結果の月の最終日を返します。

したがって、add_months(to_date('28-feb-2011'),12)は結果として2012年2月29日を返します。

20
Johan

ADD_MONTHS()関数を使用できると思います。 4年は48か月なので、

add_months(DATE,48)

関数の使用に関する情報を次に示します。

http://www.techonthenet.com/Oracle/functions/add_months.php

http://asktom.Oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1157035034361

8
Dan

あなたの質問を正しく理解したかどうかはわかりませんが、

select add_months(someDate, numberOfYears * 12) from dual

トリックをするかもしれない

7
Black

これを試すことができます:

someDate + interval '4' year

[〜#〜] interval [〜#〜]

3
Grimmy

ADD_MONTHS以外のもう1つのオプション

SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('1-0')
--------- ----------------------------
29-OCT-13 29-OCT-14                   
1 row selected.


SELECT
      SYSDATE,
      SYSDATE
      + TO_YMINTERVAL ( '2-0' )
FROM
      DUAL;


SYSDATE   SYSDATE+TO_YMINTERVAL('2-0')
--------- ----------------------------
29-OCT-13 29-OCT-15                   
1 row selected.

SELECT
      TO_DATE ( '29-FEB-2004',
              'DD-MON-YYYY' )
      + TO_YMINTERVAL ( '1-0' )
FROM
      DUAL

   *
Error at line 4

ORA-01839: date not valid for month specified

しかし、2005年には2月29日がないため、最後の1つは違法です。したがって、うるう年の場合は失敗します(2月29日)

同じものについて documentation を読む

2
SriniV