本质上,我有一个查询负责在上个月内获取所有记录(使用特定的过滤器)。我正在使用Oracle的interval关键字,并且所有工作都很好,直到今天(2009年12月31日)。我正在使用的代码是一个月的时间间隔不能在31日工作?
select (sysdate - interval '1' month) from dual
和错误,我得到它
ORA-01839: date not valid for month specified
我如何使用间隔关键字可与任何兼容的日期?或者如果任何人有更好的方法来解决这个问题,我全都耳熟能详。
谢谢。
谢谢。 :) 任何想法,为什么add_months()的作品,但不是间隔?是因为12月份有31天,11月只有30天? – Mike 2009-12-31 13:31:01
不完全确定,但INTERVAL是另一种数据类型(类似于DATE和TIMESTAMP),Steve Feuerstein的PL/SQL书中有关它的所有内容看起来相当复杂。我通常会去做最简单的事情!自Oracle 7开始,ADD_MONTHS一直在使用DATE类型(即SYSDATE)。 如果要在午夜边界开始,可能需要使用ADD_MONTHS(trunc(sysdate), - 1)。 – CMG 2009-12-31 13:36:54
完美!感谢您的澄清和代码修改。 :) – Mike 2009-12-31 13:38:48