DB2 UDF 返回添加日期?
我正在尝试创建一个 DB2 UDF,它接受输入日期并返回添加了几个月的新日期。此步骤的查询语法是使用
select date + 12 months from sysibm.sysdummy1;
Inside the UDF I can't get this to work
monthsToAdd INTEGER;
SET monthsToAdd=4;
set result= inputDate + monthsToAdd + MONTHS;
return result;
它说
SQL 状态:42816 供应商代码:-182 消息:[SQL0182] 日期、时间或时间戳表达式无效。原因 。 。 。 。 。 :发生以下情况之一: -- 加法的一个操作数是日期,另一个不是日期持续时间。 -- 加法的一个操作数是时间,另一个不是时间长度。 -- 加法的一个操作数是时间戳,另一个不是持续时间。 -- 减法的一个操作数是日期,另一个操作数不是日期、字符或日期持续时间。 -- 减法的一个操作数是时间,另一个操作数不是时间、字符或持续时间。 -- 减法的一个操作数是时间戳,另一个不是时间戳、字符或持续时间。恢复 。 。 。 :更正算术表达式,使其包含有效的日期、时间或时间戳表达式。再次尝试该请求。
I am trying to make a DB2 UDF that takes input a date and returns new date with some months added to it. The query syntax for this step is to use
select date + 12 months from sysibm.sysdummy1;
Inside the UDF I can't get this to work
monthsToAdd INTEGER;
SET monthsToAdd=4;
set result= inputDate + monthsToAdd + MONTHS;
return result;
It says
SQL State: 42816
Vendor Code: -182
Message: [SQL0182] A date, time, or timestamp expression not valid. Cause . . . . . : One of the following has occurred: -- An operand of addition is a date and the other is not a date duration. -- An operand of addition is a time and the other is not a time duration. -- An operand of addition is a timestamp and the other is not a duration. -- An operand of subtraction is a date and the other is not a date, character, or date duration. -- An operand of subtraction is a time and the other is not a time, character, or time duration. -- An operand of subtraction is a timestamp and the other is not a timestamp, character, or duration. Recovery . . . : Correct the arithmetic expression so that it contains a valid date, time, or timestamp expression. Try the request again.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是一个简单的修复:
It's a simple fix:
正如在 v5r3 DB2 for i5/OS [以及 DB2 for IBM i 7.3] 上实际编写的脚本一样:
As actually scripted on a v5r3 DB2 for i5/OS [and also with DB2 for IBM i 7.3]: