2016-08-24 6 views
0

日付から何ヶ月分を引いて、別の日付を生成するには?の設定値を使用して日付のリストを返します

  1. するvar date_A = 24-06-2016
  2. するvar date_B = 24-01-2016
  3. VARのx = 5

してください私は、xの値を使用する方法(回数date_Aの値からdate_Bの値を計算するには?

+0

私は明確にするために、導入文を追加しました –

答えて

0

あなたがthe add_months() function使用することができます:あなたが行うことができます(それはあなたが持っているものかどうかわからない)SQL * PlusまたはSQL Developerのバインド変数で

select add_months(to_date('24-06-2016', 'DD-MM-YYYY'), -5) from dual; 

ADD_MONTHS(TO_DATE('24-06-2016','DD-MM-YYYY'),-6) 
------------------------------------------------- 
2015-12-24          

を:

var date_a varchar2(10); 
var date_b varchar2(10); 
var x number; 

exec :date_a := '24-06-2016'; 
exec :x := 5; 

exec :date_b := to_char(add_months(to_date(:date_a, 'DD-MM-YYYY'), -:x), 'DD-MM-YYYY'); 

print date_b 

DATE_B 
------ 
24-01-2016 

あなたがそれぞれをしたい場合過去5か月、現在の月には、ダミーを使用できます。hierarchical query

select add_months(to_date('24-06-2016', 'DD-MM-YYYY'), 1-level) 
from dual 
connect by level <= 6; 

ADD_MONTHS(TO_DATE('24-06-2016','DD-MM-YYYY'),1-LEVEL) 
------------------------------------------------------ 
2016-06-24            
2016-05-24            
2016-04-24            
2016-03-24            
2016-02-24            
2016-01-24            
select add_months(to_date('24-06-2016', 'DD-MM-YYYY'), 1-level) 
from dual 
connect by add_months(to_date('24-06-2016', 'DD-MM-YYYY'), 1-level) 
    >= to_date('24-01-2016', 'DD-MM-YYYY'); 

ADD_MONTHS(TO_DATE('24-06-2016','DD-MM-YYYY'),1-LEVEL) 
------------------------------------------------------ 
2016-06-24            
2016-05-24            
2016-04-24            
2016-03-24            
2016-02-24            
2016-01-24            

またはご希望の場合はconnect by構文の代わりにrecursive subquery factoringを使用することができ、あなたは上だ:それとも、実際には開始日と終了日ではなく、終了日とxを持っている場合、あなたが行うことができます11gR2以上:

with r (dt) as (
    select to_date('24-06-2016', 'DD-MM-YYYY') from dual 
    union all 
    select add_months(r.dt, -1) from r 
    where add_months(r.dt, -1) >= to_date('24-01-2016', 'DD-MM-YYYY') 
) 
select r.dt 
from r 
order by r.dt desc; 

これらのクエリの日付または上限にもバインド変数を使用できます。

+0

返されたいリスト
24-06-16
24-05-16
24-04-16
24-03-16
24-02-16 –

+0

@ OluAkin - それはあなたの期待された出力をquエスティオン;現時点では、あなたは単一の日付がほしいと言います。質問を編集して、必要なものを正確に説明してください。 –

+0

ありがとうございます。それはうまくいく(y) –

0

あなたはdate_Aからxヶ月を減算したい場合は、それはです:

add_months(date_A, x * -1) 

編集:アレックスはそれに私を打ち、そして新しい要件がある:(

関連する問題