我希望有人可以帮助我。
我想在数据库日期中增加一个月,但我想防止在最后一天的两个月中跳过两个月。
例如,我可能有:
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