添加日期不超过一个月

Osc*_*Ryz 2 sql oracle math date function

我希望有人可以帮助我.

我想在数据库日期添加一个月,但我希望在最后的那些日子里防止两个月跳过.

例如,我可能有:

2009年1月31日

我想得到

2009年2月28日

并不是

2009年3月2日

下一个日期是

2009年3月28日

2009年6月28日

等等

是否有一个函数已经在oracle中执行这种操作?

编辑

叶氏.我想每个月将所有具有某种状态的记录复制到下一个(因此用户不必再每月输入2,000行)

我可以手动获取所有记录并更新日期(以命令方式)但我宁愿让SQL完成这项工作.

就像是:

insert into the_table 
select f1,f2,f3, f_date + 30 /* sort of ... :S */  from the_Table where date > ? 
Run Code Online (Sandbox Code Playgroud)

但问题出在最后一天.

在我必须编写类似这样的代码之前有任何想法?

for each record in 
   createObject( record )
   object.date + date blabala
   if( date > 29 and if februrary and the moon and the stars etc etc 9 

end 

update....  et
Run Code Online (Sandbox Code Playgroud)

编辑:2

添加几个月的伎俩.

现在我只有这个:

insert into my_table
select f1, add_months( f2, 1 ) from my_table where status = etc etc 
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

Ton*_*ews 11

Oracle有一个内置函数ADD_MONTHS,完全可以:

SQL> select add_months(date '2008-01-31',1) from dual;

ADD_MONTHS(
-----------
29-FEB-2008

SQL> select add_months(date '2008-02-29',1) from dual;

ADD_MONTHS(
-----------
31-MAR-2008
Run Code Online (Sandbox Code Playgroud)