基本信息
日期運算函式
ADD_MONTHS(d,n)--時間點d再加上n個月
例子:
select sysdate, add_months(sysdate,2) aa from dual;
SYSDATE AA
21-SEP-07 21-NOV-07
注意
其語法格式如下:
ADD_MONTHS(date,months)
其中:
date 一個日期數值
months 要加上的月份數。要減去的月份數用負數
下面的例子解釋了該函式的使用:
ADD_MONTHS(TO_DATE(’15-Nov-1961’,’d-mon-yyyy’),1) =’15-Dec-1961
ADD_MONTHS(TO_DATE(’30-Nov-1961’,’d-mon-yyyy’),1) =’31-Dec-1961
ADD_MONTHS(TO_DATE(’31-Jan-1999’,’d-mon-yyyy’),1) =’28-Feb-1999
注意,在上面的第三個例子中,函式將不得不將31日往回調整為28日,已使結果對應新一月的最後一天。因為,1999年的2月份只有28天。在第二個例子中,則是從30往後調整為31,也同樣是為了保持對應的最後一天。
功能
ADD_MONTHS函式作為它的第一個參數一個DATETIME或DATE的表達,需要第二個的整數參數,指定的月數添加到第一個參數值。 第二個參數可以是正或負。
返回的值是第一個參數和一個間隔單位的月份值的月數,第二個參數指定的日期或DATETIME值的總和。
返回的數據類型取決於第一個參數的數據類型:如果第一個參數的計算結果為一個DATE值 ,ADD_MONTHS返回一個日期值。如果第一個參數的計算結果為一個DATETIME值 ,ADD_MONTHS分數(5)值返回一個DateTime的一年, 比一天中的第一個參數為時間單位相同的價值觀。 如果 一天 一個月的時間單位,並在第一個參數指定月份的最後一天,如果一個月少天比 一天中的第一個參數,則返回值是最後一天所產生的一個月。 否則,返回值,作為第一個參數月份的同一天。
返回值可以在不同的年份,如果一個月後比12月的一年中的第一個參數(或負早於1月的第二個參數,)。
下面的查詢調用的 ADD_MONTHS函式兩次投影子句中,作為參數使用列表達式。 這裡的列名指示列的數據類型,並 DBDATE設定MDY4 /:
選擇a_serial,b_date,ADD_MONTHS(b_date,a_serial) c_datetime,ADD_MONTHS(c_datetime,a_serial)從mytab WHERE a_serial = 7;在這個例子 ADD_MONTHS返回DATE和DATETIME值中: a_serial 7 b_date 07/06/2007 (表達)02/06/2008 c_datetime 2007-10-06 16:47:49.00000 (表達)2008-05-06 16:47:49.00000如果您使用的Informix ®主機變數來存儲 ADD_MONTHS的參數,但在準備時間不知道該參數的數據類型,假定的數據類型為datetime年分數(5)。 如果在運行時,已經準備的發言後,用戶提供了一個DATE值的主機變數,錯誤-9750發出。 要避免這個錯誤,使用強制指定的宿主變數的數據類型,在這個程式片段:的sprintf(查詢“,”選擇ADD_MONTHS(日期:6)從mytab“嗎?); EXEC SQL準備selectq:查詢; EXEC SQL聲明selectq select_cursor游標;使用EXEC SQL開放select_cursor:hostvar_date_input; EXEC SQL FETCH select_cursor到:var_date_output;