首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle 01839:指定月份无效的日期。29-02-2016闰年

Oracle 01839:指定月份无效的日期。29-02-2016闰年
EN

Stack Overflow用户
提问于 2016-02-29 08:46:41
回答 1查看 8.2K关注 0票数 6

我们都知道今天是一个特别的日子。它是29th of February 2016 of a闰年

我们从Oracle DB中的某些表中收到一条错误消息。错误是:Oracle ORA-01839: date not valid for month specified

例如,一个简单的选择错误发生的地方:select * from table where table_date > sysdate -0.1;

对于其他表,这个选择没有问题,只对一些表。

有办法解决这个问题吗?因为我们今天不能使用很多表格。

我们正在使用Oracle 12c

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-29 10:14:51

经过深入研究,很清楚为什么我们的一些选择在今天不起作用。此错误是由关键字interval及其已知问题引起的。(或者这就是ANSI/ISO规范说它应该工作的方式,第205页底部/第206页顶部)

这是oracle社区博客的一首歌

问题

代码语言:javascript
运行
复制
select to_date('2012-feb-29','yyyy-mon-dd') + interval '1' year as dt from dual;

ORA-01839: date not valid for month specified
01839. 00000 -  "date not valid for month specified"
*Cause:    
*Action:

select to_date('2012-feb-29','yyyy-mon-dd') + interval '2' year as dt from dual;

ORA-01839: date not valid for month specified
01839. 00000 -  "date not valid for month specified"
*Cause:    
*Action:

select to_date('2012-feb-29','yyyy-mon-dd') + interval '3' year as dt from dual;

ORA-01839: date not valid for month specified
01839. 00000 -  "date not valid for month specified"
*Cause:    
*Action:

select to_date('2012-feb-29','yyyy-mon-dd') + interval '4' year as dt from dual;

29-FEB-16 00:00:00


select to_date('2012-feb-29','yyyy-mon-dd') + interval '1' day as dt from dual;

01-MAR-12 00:00:00

select to_date('2012-feb-29','yyyy-mon-dd') + interval '1' month as dt from dual;

29-MAR-12 00:00:00

答案

这就是间隔的工作方式。闰年是问题中最小的一个月,到3月31日再加一个月,就会产生同样的错误。如果要确保结果是有效日期,请使用ADD_MONTHS。(添加年份没有单独的函数;使用ADD_MONTH (SYSDATE,12*n)获得n年后的日期。)

为什么会在我们的案例中发生:

在我们的例子中,出于安全考虑,我们对一些表使用虚拟私有数据库。在这里,我们在大多数选择中使用了interval关键字。

应该做什么:

使用ADD_MONTHS代替。

代码语言:javascript
运行
复制
select add_months(to_date('2012-feb-29','yyyy-mon-dd'), 12) as dt from dual;
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35695175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档