我正在使用这个SQL查询:
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
答案 0 :(得分:3)
这是预期的行为;请参阅文档的第六个项目in the datetime/interval arithmetic部分。
正如丽莎所说,你可以使用具有相反行为的add_months
- 这有时也会引起混淆。你需要决定哪一个最适合你。
答案 1 :(得分:2)
select sysdate,add_months(sysdate,-6) from dual;