我正在使用SLT将表加载到我们的Hana DB中。 SLT使用ABAP字典并将时间戳作为十进制(15,0)发送到HANA数据库。通过计算视图中的计算列进入HANA数据库后,我尝试将小数转换为时间戳或二次更新。表看起来像这样:
我运行一个小型SLT转换来填充第27-30列。 SLT中的ABAP层根据数据库事务填充列。
当我尝试将列28-30转换为时间戳或二次更新时,问题就出现了。使用这样的语法:
Select to_timestamp(DELETE_TIME)
FROM SLT_REP.AUSP
Select to_seconddate(DELETE_TIME)
FROM SLT_REP.AUSP
我收到以下错误:
计算列中的语法如下所示:
计算视图中的错误为:
有没有人找到将ABAP时间戳(十进制(15,0))转换为HANA中的时间戳或二次更新的好方法?
答案 0 :(得分:1)
有可用的转换功能,你可以在这里使用(遗憾的是没有很好的文档记录)。
select tstmp_to_seconddate(TO_DECIMAL(20110518082403, 15, 0)) from dummy;
TSTMP_TO_SECONDDATE(TO_DECIMAL(20110518082403,15,0))
2011-05-18 08:24:03.0
答案 1 :(得分:1)
问题在于ABAP数据类型。我将目标变量声明为DEC(15,0)。提取数据的ABAP在某些情况下将时间戳四舍五入到第60秒。一旦进入Target Hana,当时间看起来像“20150101121060”时,to_timestamp(target_field)将返回无效,最后两位数字是第60秒。这是无效的,会失败。基础Hana层并不在乎,因为它只是将长度14放入一个字段中。我将源变量更改为DEC(21,0)。这消除了ABAP舍入并解决了我的问题。