解析日期时出现 HANA 错误

HANA Error while parsing Date

我正在尝试这样做

CREATE PROCEDURE Create_test(IN datefrom date
)
as

begin
select add_years('0',years_BETWEEN('0', :datefrom)-1 )from dummy;
end

当我 运行 没问题,没有错误,程序就创建好了。但是当我尝试调用该过程时,它给了我这个错误

SAP Hana Database Error: invalid DATE, TIME or TIMESTAMP value: Error while parsing 11/11/2018 12:00:00 AM as DATE at function typecast() (at pos 31)

请帮忙

我知道答案。我使用的编辑器 TOAD for SAP Solution 在我执行程序时给我一个错误的日期格式。它给我 'DD/MM/YYYY' 格式,正确的是 'YYYY/MM/DD'.

错误信息很可能是由调用过程的方式引起的,即输入参数。

当您输入实际的 日期 数据类型时(例如 return 值 来自类似 current_date 的函数, type conversion like to_date ('21/02/2018', 'DD/MM/YYYY') or a date literal date'2018/02/21' 的结果)不会引发错误。

因此,正如您在回答中所写,问题在于您输入过程的文本日期格式。在这种情况下,SAP HANA 将尝试自动将值转换为日期数据类型,但如果格式不是已记录的标准格式之一,则会失败。

这是隐式类型转换需要非常小心的另一个例子。

关于程序的实际目标,找到当年的第一个日期,有一种更容易实现的方法。

函数current_date returns 当前日期(在服务器时区)。使用 year() 函数可以轻松获取该日期的 YEAR 部分。 最后,将其转换为日期 (daydate/seconddate) 数据类型会用尽可能低的值填充日期组件:那是一年中的第一天。

select to_date(year(current_date)) NEW_YEAR_DATE from dummy