2017-03-15 63 views
-1

如果我添加1抽取(來自日起一個月),則沒有結果變成13或1(明年一月)提取月,加入1

我有下面的代碼:

(extract(day from sysdate) >=1 and extract(month from sysdate)=12) and (targstartdate >= to_date(((extract(month from sysdate))|| '-1-' ||    (extract(year from sysdate)+1)) , 'mm-dd-yyyy') and targstartdate <= to_date(((extract(month from sysdate)+1)|| '-1-' ||(extract(year from sysdate)+1)) , 'mm-dd-yyyy') 
+0

請分享DBMS以及 –

+0

'選擇(一個月SYSDATE)提取物+10 從dual'給了我13爲'3 + 10' –

+0

是的,先生,是本月13會自動變爲1月份因爲有是沒有月份13. –

回答

1

您可以使用MOD

MOD(extract(month from sysdate)+1,12) + 1 
0

如果你想拿到下個月的月數,翻轉你的邏輯。除了提取月份號碼並添加1之外,還需要在日期中添加一個月,然後提取月份。看到下面的區別。第二個增加一個月,然後提取1的月份(1月份)。

select extract(month from to_date('12/15/2017','MM/DD/YYYY')) + 1 from dual 
union all 
select extract (month from ADD_MONTHS(to_date('12/15/2017','MM/DD/YYYY'),1)) from dual;