本質上,我有一個查詢負責在上個月內獲取所有記錄(使用特定的過濾器)。我正在使用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