0

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

我将日期列返回BUDAT20190101. 我正在尝试将其转换为日期,但在 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(作为 pos 1028)

最近几天我一直在尝试使用此代码的主题,但无济于事

我想看到输出为dd/MM/yyyy.

4

2 回答 2

0

早上好,感谢您花时间回答。

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

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

我设法做的是让日期类似于日期格式,使用:

CONCAT(CONCAT(右 (BUDAT, 2), SUBSTR(BUDAT, 5, 2)), 左 (BUDAT, 4))

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

现在1-

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

=格式(Cdate(字段!POSTG_DATE.Value),“ddMMyyyy”)

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

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

于 2019-07-11T08:15:50.407 回答
0

使用 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).

于 2019-07-09T20:20:51.030 回答