首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Interval Bug?

Oracle Interval Bug?
EN

Stack Overflow用户
提问于 2011-05-31 14:38:44
回答 2查看 768关注 0票数 2

我使用这个sql查询:

代码语言:javascript
复制
select sysdate, sysdate - INTERVAL '6' month from dual;

但它返回: ORA-01839:日期对于指定的月份无效。

这很奇怪,因为如果我将数字改为9,它将返回日期(sysdate = 31/05/11,减去的是31/08/10)。我也尝试使用不同的值: 1,3,6,8,11也不工作,但2,4,5,7,9,12正在工作。

从数字上看,我认为这是因为生成的quert没有该月的31天。这是预期的行为吗?因为在MySQL中,我可以使用查询(select now() - Interval 6 Month;)来获得正确的值。还有别的办法吗?

我使用的是Oracle 11.1.0.6

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-31 15:03:32

代码语言:javascript
复制
select sysdate,add_months(sysdate,-6) from dual;
票数 2
EN

Stack Overflow用户

发布于 2011-05-31 15:10:00

这是预期行为;请参阅文档的第六个bullet in the datetime/interval arithmetic部分。

正如Lisa所说,你可以使用add_months,它有相反的行为--这有时也会造成混乱。你需要决定哪一个最适合你。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6183859

复制
相关文章

相似问题

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