2009-06-04 17 views

答えて

6
SELECT ADD_MONTHS(SYSDATE, -6) FROM dual 

ADD_MONTHS()を参照してください。

+0

+1は正解ですが、ほとんどの場合、最も適切なドキュメントを参照するリンクが含まれています。 – spencer7593

4

あなたは、 "私は与えられた日からちょうど6ヶ月減算するほしい" 書きます。しかし、正確に「6ヶ月」とは何ですか?それは自明ではない。たとえば、2009年8月30日を考えてみましょう。正確に6ヶ月前の日付は何ですか?または2009年2月28日...

だからあなたが何を意味するかを定義してから、使用したい方法を決定する必要があります。

  • ADD_MONTHS(...、 - 6)
  • -intervalを'6' の月
  • 独自のコード

例:

SQL> select add_months(date '2009-08-30', -6) 
    2  , add_months(date '2009-02-28', -6) 
    3 from dual 
    4/

ADD_MONTHS(DATE'200 ADD_MONTHS(DATE'200 
------------------- ------------------- 
28-02-2009 00:00:00 31-08-2008 00:00:00 

1 row selected. 

SQL> select date '2009-02-28' - interval '6' month 
    2 from dual 
    3/

DATE'2009-02-28'-IN 
------------------- 
28-08-2008 00:00:00 

1 row selected. 

SQL> select date '2009-08-30' - interval '6' month 
    2 from dual 
    3/
select date '2009-08-30' - interval '6' month 
         * 
ERROR at line 1: 
ORA-01839: date not valid for month specified 

ご覧のとおり、add_monthと間隔表記には明確な違いがあります。

よろしく、 ロブ。

+1

良い点は、ビジネスが「正確に6ヶ月」を望んでいるとすれば、「正確にはどういう意味ですか?」と尋ねる必要があります。 私は、「1ヶ月」が28日間であると考えているケースがありました。 それ以外の場合は、通常はADD_MONTHSで十分です。 –