我需要几天添加日期哈纳存储过程,但我收到错误消息需要的天数在SAP HANA添加日期存储过程
错误,而解析日期/时间
v_end_date_plus:= add_days(TO_DATE( '|| || p_end_date', 'YYYY-MM-DD'),90)
其中p_end_date是DATE和我传递该值作为参数而调用存储过程。
v_end_date_plus
是一个DATE
变量。
但我在运行时遇到错误。
是否有其他方式或我在做什么错?
我需要几天添加日期哈纳存储过程,但我收到错误消息需要的天数在SAP HANA添加日期存储过程
错误,而解析日期/时间
v_end_date_plus:= add_days(TO_DATE( '|| || p_end_date', 'YYYY-MM-DD'),90)
其中p_end_date是DATE和我传递该值作为参数而调用存储过程。
v_end_date_plus
是一个DATE
变量。
但我在运行时遇到错误。
是否有其他方式或我在做什么错?
p_end_date
应该是一个varchar字段,或者是您的技术中使用的适当的字符串文字。它不应该用引号引起来。
v_end_date_plus := add_days (TO_DATE(p_end_date , 'YYYY-MM-DD'), 90)
说明使用Oracle作为参考:
在Oracle数据库中,默认的日期格式是DD-MON-RR或DD-MON-YYYY。
所以,如果我使用正确的日期格式到p_end_date变量,我能够获得输出。
但是,如果我偏离这种默认格式,我的尝试会出错。
所以,如果我想的灵活性,重新定义p_end_date
在我选择的格式,而不是按照默认的设置,它应该是一个字符串文字。(VARCHAR在Oracle中)。
编辑:
这个答案的实质只是为了表明变量应为VARCHAR传递。从下面拉斯溴的建议借用修改p_end_date变量的语法:
v_end_date_plus := add_days (TO_DATE(:p_end_date , 'YYYY-MM-DD'), 90)
Oracle和SAP HANA在脚本语言方面有很大的不同。在这种情况下,用比喻解释不起作用。 –
@LarsBr。,好的,指出。那么我们确定这种扩展的比喻在这种情况下是行不通的吗?快速浏览告诉我,HANA中存在类似的语法。 –
@ user4836066,如果您尝试过并且我的解决方案无法正常工作,请在此处声明。然后我会删除答案。 –
即使你没有张贴您会收到什么样的错误,我想在你的代码的问题是你提到你的输入变量的方式。
v_end_date_plus := add_days (:p_end_date , 90);
使用参数前面的冒号(:),您应该可以使用它而不必将其转换为不同的数据类型。
@LarsBr。是否正确,您需要冒号(:)才能引用变量,并且如果它确实是DATE类型,则不需要再次转换TO_DATE。
但是,在你的例子中,你有一些混合引号和连接,让我觉得你实际上想用p_end_date构造一些字符串。这将需要转换为日期第一:
p_end_date := '2016-05-03'; -- for example
v_end_date_plus := add_days(TO_DATE(:p_end_date , 'YYYY-MM-DD'), 90);
的部分' || p_end_date || '
在你的例子看起来也有点像整个代码实际上是在EXEC或类似的使用字符串的一部分。如果是这种情况,则需要为两个参数都逃过单引号。
exec 'v_end_date_plus := add_days(TO_DATE(''' || :p_end_date || ''', ''YYYY-MM-DD''), 90)';
您应该发布错误消息。 – Hannobo