Oracle Date - 如何添加年份

时间:2012-02-16 14:42:00

标签: oracle oracle10g date-arithmetic

我有一个日期字段

DATE = 10/10/2010

sum = 4(这是计算年数)

有没有办法在2010年10月10日增加四年并制作它 2014年10月10日

7 个答案:

答案 0 :(得分:46)

尝试添加月份(12 *年)。像这样 -

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

答案 1 :(得分:19)

使用add_months

示例:

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

警告
add_months,如果您输入一个月的最后一天,则返回结果月份的最后一天。

因此,add_months(to_date('28-feb-2011'),12)将返回29-feb-2012。

答案 2 :(得分:8)

我相信你可以使用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

答案 3 :(得分:7)

我不确定,如果我理解你的问题,但是

select add_months(someDate, numberOfYears * 12) from dual

可能会做到这一点

答案 4 :(得分:3)

你可以试试这个:

someDate + interval '4' year

INTERVAL

答案 5 :(得分:2)

除了ADD_MONTHS

之外还有一个选项
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日没有,因此在闰年案例中失败(2月29日)

阅读同一

documentation

答案 6 :(得分:0)

        SELECT TO_CHAR(SYSDATE,'YYYY')-2 ANO FROM DUAL