【问题标题】:SAP HANA SQL FLOAT TO DATESAP HANA SQL 浮点至今
【发布时间】:2022-01-04 12:35:10
【问题描述】:

在 SAP 中,一些日期以 floats 的形式存储在表中,如下表 AUSP 的列 ATFLV 所示,其值为 2.0181218000000000E+07

txt
MANDT OBJEK                     ATINN ATZHL MAFID KLART ADZHL ATWRT ATFLV

100   000000000000004148   9999999400   001 O     023    0000       2.0181218000000000E+07

其他示例:

我知道这些应该是日期,但我找不到任何要转换的函数。我考虑过使用 Add_seconds(假设存储的值以毫秒为单位),但我不知道使用 1/1/19001/1/1970 的基准日期是什么?

感谢您的帮助。

29.11.2021 编辑

只是为了添加一些上下文,我正在使用 HANA DB Studio 创建一个计算视图来执行此转换,使用 HANA SQL 中的表函数。

【问题讨论】:

  • 请粘贴文本而不是图像,以便人们可以简单地再次复制并粘贴他们的答案。我为你做了。
  • 2.0181218000000000E+07 表示20181218(E+07 是将小数点分隔符右移7位)。无需转换,格式为 YYYYMMDD 即 2018 年 12 月 18 日。
  • 我不是 SAP 人员,但我是一个快速的 Google 提出了多个对 CTCV_CONVERT_FLOAT_TO_DATE 的引用
  • @NickW 您认为这是一个 ABAP 问题,但它似乎是一个 HANA SQL 问题。
  • 不需要逆向工程,我的第二条评论已经描述了逻辑,对应这个ABAP代码:DATA(date) = CONV d( CONV num8( numeric_value ) ).当然需要的双重转换需要一点解释。

标签: sql date casting floating-point hana


【解决方案1】:

感谢 cmets 和 @SandraRossi 的帮助,我已经能够使用以下方法解决我的问题:

TO_DATE(LEFT(REPLACE("VALUE_OLD", '.',''),8))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-31
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多