2011-01-20 20 views
1

私は今のところ{?EndDate} - INTERVAL '1' YEARのような構文を使用していましたが、最終的にヒットするという問題があることを知っていました。私はDATE '2010-12-31' - INTERVAL '6' MONTHをしようとしましたが、6月31日は存在しないので窒息しました。これをコード化する最も効率的で一貫した方法は何ですか?このようにすることを決定した人物を追跡することは、より満足できるものですが、実用的ではありません。 :-)Oracle PL/SQLの日時演算間隔

+0

彼らは2月のことを聞いたことがないことがありますか?このような性質のほとんどの決定と同様に –

+0

、それは委員会によって作られた、それはANSI SQL(92または99の一部であり、私はわからないとして) –

答えて

3

があると確信しています方法、確かに誰かが6ヶ月と考えることによるからです。しかし、私見、引くか、数ヶ月追加するadd_monthsは(少なくとも、オラクルで)標準的な方法であると仮定しても安全である:

select add_months(DATE '2010-12-31',-6) from dual; 

この式は(その月の最後の日である(6月30日2010年を返します。 )12月に31日である。

+1

デュアルからのadd_months(date '2011-02-28'、1)の選択は3月31日で、3月28日ではないことに注意してほしい。 –

+0

Gary - それが問題なら、それを行うための他の方法。 – SarekOfVulcan

関連する問題