我正在尝试创建一个DB2 UDF,它将输入日期并返回新日期并添加了几个月。这一步的查询语法是使用DB2 UDF返回添加日期?
select date + 12 months from sysibm.sysdummy1;
的UDF里面,我不能得到这个工作
monthsToAdd INTEGER;
SET monthsToAdd=4;
set result= inputDate + monthsToAdd + MONTHS;
return result;
它说
SQL状态:42816 供应商代码: -182 消息:[SQL0182]日期,时间或时间戳记表达式无效。原因。 。 。 。 。 :发生以下情况之一: - 加法操作数是日期,另一个不是日期持续时间。 - 加法的操作数是一个时间,另一个不是持续时间。 - 加法操作数是时间戳,另一个不是持续时间。 - 减法操作数是一个日期,另一个不是日期,字符或日期持续时间。 - 减法操作数是一个时间,另一个不是时间,字符或持续时间。 - 减法操作数是时间戳,另一个不是时间戳,字符或持续时间。恢复。 。 。 :更正算术表达式,使其包含有效的日期,时间或时间戳表达式。再次尝试请求。
是该错误的编译时错误(您可以创建过程吗?)还是运行时错误?你能发布整个创建过程吗? – 2011-01-26 13:19:54
任何不使用DB2标量函数ADD_MONTHS的原因,自2008年1月的DB2 for IBM i 6.1开始提供;或许还在v5r4上?作为参考:在[IBM i 7.2->数据库 - >参考 - > SQL参考 - >内置函数 - >标量函数 - > ADD_MONTHS](http://www.ibm.com/support/knowledgecenter /en/ssw_ibm_i_72/db2/rbafzscaaddmonths.htm) – CRPence 2016-10-09 20:25:00