我正在使用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
。
答案 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转换信息