【问题标题】:Converting SAP nVARCHAR to a date将 SAP nVARCHAR 转换为日期
【发布时间】:2019-07-09 13:10:48
【问题描述】:

我正在使用 SSRS 2017 使用 ODBC 连接查询 SAP hana 数据库。

我将日期列 BUDAT 返回为 20190101。我正在尝试将其转换为日期,但在 Sataset 屏幕中不允许我使用 CONVERT 或 FORMAT 命令:

尝试 #1:

CONVERT(DATE, RIGHT(SAPABAP1.AFRU.BUDAT, 2) + SUBSTR(SAPABAP1.AFRU.BUDAT, 3, 2) + LEFT (SAPABAP1.AFRU.BUDAT, 4))

我收到一个错误

表达式无效或缺失

当我“输入”我输入的代码时。

尝试 #2

format(SAPABAP1.AFRU.BUDAT, "dd/MM/yyyy") 

SQL Server 接受语法,但是当查询尝试运行时,我得到错误

一般错误;260 列名无效;dd/MM/yyy:line1 col 1029 (as pos 1028)

过去几天我一直在尝试此代码的主题,但无济于事

我希望看到输出为dd/MM/yyyy

【问题讨论】:

  • 您使用的是 SAP Hana - 而不是 sql server。您需要为 SAP 使用适当的 sql 特性、函数和语法。如果您正在检索日期列,为什么要尝试在实际查询中转换它?一个更好的地方是你展示它的地方。
  • 早上好,谢谢您提供的信息,所以实际上当我查询 SAP 并将数据拉过来并显示在屏幕上时,SQL 将此字段的类型转换为 NVARCHAR,我假设我是在 SQL 中,我会使用 SQL 代码将字段中的数据类型转换为我想要的类型?您对 sql/sap 代码将此字段转换为日期有任何想法吗(请注意,它就像 Power BI 中的一种享受,只需单击行标题并将其设置为日期,然后就完成了)。
  • 用单引号(撇号)替换格式语句中的双引号。
  • 嗨,Arvo,我试过了,但还是不行。

标签: sql-server date hana ssrs-2017


【解决方案1】:

使用 YYYYMMDD 格式的 DATS 字段后,您需要将字符串转换为真正的日期值。

假设SAPABAP1.AFRU.BUDAT 是一个要解析的有效字符串:

对于#1(SSRS场景),你需要使用Format(Cdate(SAPABAP1.AFRU.BUDAT),"yyyyMMdd").

对于#2(SQL Server 场景),您需要使用CONVERT(datetime,SAPABAP1.AFRU.BUDAT,112),其中“112”指的是 yyyyMMdd。您也可以省略 112,因为 yyyyMMdd 是 ISO 格式。或者,您可以使用CAST(SAPABAP1.AFRU.BUDAT as datetime)

【讨论】:

    【解决方案2】:

    早上好,感谢您抽出宝贵时间回答。

    2-CONVERT(datetime,SAPABAP1.AFRU.BUDAT,112)- 当我在所有代码所在的“列”中的 sql 端输入代码时,当我按 Enter 接受代码时,我得到一个 Microsoft Visual Studio 错误弹出窗口显示“函数参数计数错误”并且无法接受您编写的代码。

    2 - 复制并粘贴 CAST(SAPABAP1.AFRU.BUDAT 作为日期时间) - 按回车我得到错误无效或缺少表达式。

    我设法使日期类似于日期格式:

    CONCAT(CONCAT(RIGHT (BUDAT, 2), SUBSTR(BUDAT, 5, 2)), LEFT (BUDAT, 4))

    这给出了从 BUDAT 20190104 到 04012019 的输出(接近我需要的)。

    现在 1-

    使用上面的代码获取 01012019,然后我使用您的代码将此文本转换为日期,然后对其进行格式化(注意,为了清楚起见,我将字段名称从 Budat 更改为 postg_date):

    =Format(Cdate(Fields!POSTG_DATE.Value),"ddMMyyyy")

    ssrs 运行时的输出在输出字段中给了我#ERROR 我试图包括一个屏幕截图,但我需要 10 个重新定位点才能这样做:(

    目前,我们通过从 SAP 下载到服务器的信息获得了我正在查看的信息,该服务器是名为“universe”的软件,然后被喷到我编写代码所针对的 SQL 中。 您是否认为 SQL 2017 无法将信息直接从 SAP 转换为它可以读取的格式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 2020-10-05
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 2013-11-06
      相关资源
      最近更新 更多