ADD_MONTHS 函数采用 DATETIME 或 DATE 表达式作为它的第一个参数,并需要第二个参数指定要添加到第一个参数值上的月数。第二个参数可为正的或负的。
返回的值是基于第二个参数指定的月数,作为 INTERVAL UNITS MONTH 值的第一个参数的 DATE 或 DATETIME 值的总和。
如果在第一个参数中的 day 和 month 时间单位指定该月的最后一天,或如果结果月的天数少于第一个参数中的 day,则返回的值为结果月的最后一天。否则,返回的值与第一个参数为该月的同一天。
如果结果月晚于第一个参数中那年的十二月(或对于负的第二个参数,早于一月),则返回的值可在不同的年份中。
下列查询使用列表达式作为参数,在 Projection 子句中调用 ADD_MONTHS 函数两次。在此,列名称表明列数据类型,且 DBDATE 设置为 MDY4/:
SELECT a_serial, b_date, ADD_MONTHS(b_date, a_serial), c_datetime, ADD_MONTHS(c_datetime, a_serial) FROM mytab WHERE a_serial = 7;
a_serial 7 b_date 07/06/2007 (expression) 02/06/2008 c_datetime 2007-10-06 16:47:49.00000 (expression) 2008-05-06 16:47:49.00000
sprintf(query, ", "select add_months(?::date, 6) from mytab"); EXEC SQL prepare selectq from :query; EXEC SQL declare select_cursor cursor for selectq; EXEC SQL open select_cursor using :hostvar_date_input; EXEC SQL fetch select_cursor into :var_date_output;