我正在尝试这样做
CREATE PROCEDURE Create_test(IN datefrom date
)
as
begin
select add_years('0',years_BETWEEN('0', :datefrom)-1 )from dummy;
end
当我运行它没关系时,没有错误,程序就会创建。但是当我尝试调用该程序时,它会给我这个错误
SAP Hana数据库错误:DATE,TIME或TIMESTAMP值无效:错误 同时解析11/11/2018 12:00:00 AM作为日期功能 类型转换()(位置31)
请帮忙
答案 0 :(得分:0)
错误消息可能是由调用过程的方式引起的,即输入参数。
当您从current_date
这样的函数输入实际日期数据类型(例如返回值)时,类型转换的结果喜欢to_date ('21/02/2018', 'DD/MM/YYYY')
或日期文字 date'2018/02/21'
)不会引发任何错误。
因此,正如您在答案中所写,问题是您在程序中添加的文本日期格式。在这种情况下,SAP HANA将尝试自动将值转换为日期数据类型,如果格式不是文档化的标准格式之一,则会失败。
这是为什么隐式类型转换需要非常小心的另一个例子。
关于程序的实际目标,找到当年的第一个日期,有一个更容易实现的目标。
函数current_date
返回当前日期(在服务器时区中)。使用YEAR
功能可以轻松完成该日期的year()
组件。
最后,将其转换为日期(daydate / seconddate)数据类型会填充具有最低可能值的日期组件:即一年中的第一天。
select to_date(year(current_date)) NEW_YEAR_DATE from dummy
答案 1 :(得分:-1)
我知道答案。我使用的编辑器TOAD for SAP Solution在执行过程时给出了错误的日期格式。它给了我DD / MM / YYYY'格式,正确的是'YYYY / MM / DD'。