2

我正在使用 SLT 将表加载到我们的 Hana DB 中。SLT 使用 ABAP 字典并将时间戳作为十进制 (15,0) 发送到 HANA DB。一旦通过计算视图中的计算列进入HANA DB,我试图将小数转换为时间戳或秒日期。表如下所示:

表定义

我运行了一个小型 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

我收到以下错误:

时间戳 在此处输入图像描述

问题是,它有时也有效: 在此处输入图像描述

计算列中的语法如下所示:

计算列

计算视图的错误是:

在此处输入图像描述

有没有人找到一种在HANA中将ABAP时间戳(十进制(15,0))转换为时间戳或第二日期的好方法?

4

2 回答 2

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                               
于 2017-02-02T09:14:39.280 回答
1

问题出在 ABAP 数据类型上。我将目标变量声明为 DEC(15,0)。在某些情况下,提取数据的 ABAP 会将时间戳四舍五入到第 60 秒。一旦进入 Target Hana,当时间看起来像“20150101121060”且最后两位数为第 60 秒时,to_timestamp(target_field) 将返回无效。这是无效的并且会失败。基础 Hana 层并不关心,因为它只是将长度 14 放入字段中。我将源变量更改为 DEC(21,0)。这消除了 ABAP 舍入并解决了我的问题。

于 2018-04-25T16:09:02.470 回答