将SAP nVARCHAR转换为日期

时间:2019-07-09 13:10:48

标签: sql-server date hana ssrs-2017

我正在使用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(按pos 1028)

最近几天,我花了很多时间尝试使用此代码的主题,但无济于事

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

2 个答案:

答案 0 :(得分:0)

一旦您使用YYYYMMDD格式的DATS字段,就需要将String转换为真实的Date值。

假设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)

答案 1 :(得分:0)

早上好,谢谢您抽出宝贵的时间来回答问题。

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

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

我设法做的是使用:p来获取类似于日期格式的日期。

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

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

现在1-

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

= Format(Cdate(Fields!POSTG_DATE.Value),“ ddMMyyyyy”)

在ssrs中运行时的输出在输出字段中给我#ERROR我试图添加一个屏幕快照,但我需要10个重击点才能做到这一点:(

当前,我们通过从SAP进行的通宵下载获得了我正在查看的信息,该信息可下载到服务器上,该服务器是由称为“ universe”的软件组成,然后将其喷射到i Code反对的SQL中。 您认为SQL 2017无法以可以读取的格式直接从SAP转换信息