我希望有人可以帮助我.
我想在数据库日期添加一个月,但我希望在最后的那些日子里防止两个月跳过.
例如,我可能有:
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 > ?
但问题出在最后一天.
在我必须编写类似这样的代码之前有任何想法?
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
编辑:2
添加几个月的伎俩.
现在我只有这个:
insert into my_table select f1, add_months( f2, 1 ) from my_table where status = etc etc
谢谢您的帮助.
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