在SAP HANA存储过程中添加最新日期

问题描述 投票:0回答:3

我需要在hana存储过程中添加日期,但是我收到错误消息

解析日期/时间时出错

v_end_date_plus:=添加日期(TO_DATE('|| p_end_date ||','YYYY-MM-DD'),90)

其中p_end_date是DATE,并且我在调用存储过程时将此值作为参数传递。

[v_end_date_plusDATE变量。

但是运行此程序时出现错误。

还有其他方法或我做错了什么吗?

stored-procedures sap hana hana-sql-script
3个回答
1
投票

即使您没有发布收到的错误,我想您代码中的问题也是您引用输入变量的方式。

v_end_date_plus := add_days ( :p_end_date , 90);

将冒号(:)放在参数前面,而不必将其转换为其他数据类型。


0
投票

@ 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)';

-1
投票

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变量使用正确的日期格式,则可以获取输出。enter image description here

但是,如果我偏离此默认格式,我的尝试将出错。

enter image description here

因此,如果我想灵活地以自己选择的格式重新定义p_end_date,而不是按照默认设置,则应为String文字。(Oracle中的varchar。

编辑:

此答案的本质只是建议变量应作为varchar传递。从Lars Br的以下建议借来修改p_end_date变量的语法:

v_end_date_plus := add_days (TO_DATE(:p_end_date , 'YYYY-MM-DD' ), 90)
© www.soinside.com 2019 - 2024. All rights reserved.