2

我正在使用这个 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

4

2 回答 2

3

这是预期的行为;请参阅文档的日期时间/间隔算术部分中的第六个项目符号。

正如丽莎所说,您可以使用add_months,它具有相反的行为-有时也会引起混乱。您需要决定哪个最适合您。

于 2011-05-31T07:09:59.613 回答
2
select sysdate,add_months(sysdate,-6) from dual;
于 2011-05-31T07:03:31.503 回答