我使用这个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
发布于 2011-05-31 15:03:32
select sysdate,add_months(sysdate,-6) from dual;发布于 2011-05-31 15:10:00
这是预期行为;请参阅文档的第六个bullet in the datetime/interval arithmetic部分。
正如Lisa所说,你可以使用add_months,它有相反的行为--这有时也会造成混乱。你需要决定哪一个最适合你。
https://stackoverflow.com/questions/6183859
复制相似问题