sql - 添加日期不超过一个月

标签 sql oracle function date math

我希望有人能在这方面帮助我。

我想在数据库日期中添加一个月,但我想防止在最后的那些日子里有两个跳过月份。

例如我可能有:

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

关于sql - 添加日期不超过一个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/397631/

相关文章:

Oracle数据库,将唯一索引转换为非唯一索引

javascript - 如何访问函数对象 JavaScript 中的属性函数

oracle - 在一台 Windows 机器上运行两个 Docker Oracle 容器

c# - ASP.NET 中将数据库中的行配置为在特定时间后删除的最佳方法

MySQL 查询组合行

mysql - 何时在MySQL中使用单引号,双引号和反引号

sql - 获取特定时间和日期的系统时间 - Oracle SQL

c - 获取程序中函数的真实时间、用户时间、系统时间

function - 获取等式的右侧

php - 使用 Doctrine Symfony2 中的查询生成器实现 SQL 联合查询