本文只针对S/4 HANA 1809 及更高版本有效。

话不多说,先上示例代码,然后再慢慢讲解

  REPORT ZLQT_CAST.GET TIME STAMP FIELD DATA(timestamp).DELETE FROM demo_expressions.INSERT demo_expressions FROM @(VALUE #( id = 'X' timestamp1 = timestamp ) ).SELECT SINGLEFROM demo_expressionsFIELDS CAST( CAST( DIV( timestamp1 , 1000000 )AS CHAR )AS DATS ) AS date,CAST( SUBSTRING( CAST( timestamp1AS CHAR ), 9, 6 )AS TIMS ) AS timeINTO @DATA(wa).cl_demo_output=>display( wa ).

输出截图

CAST,SUBSTRING,CONCAT联合起来在一个语句中使用

SELECT  MSEG~WERKS ,MSEG~CPUDT_MKPF  ,MSEG~BUDAT_MKPF  ,MSEG~VBELN_IM  ,LIPS~VGBEL     ,VBAK~BSTNK     ,CONCAT( '      ' , CONCAT(  MSEG~VBELN_IM , SUBSTRING( CAST( MSEG~BUDAT_MKPF AS CHAR ),1,4 ) ) )   AS AWKEY""为了构造20位char类型字段,与bkpf~awkey连表CONCAT 只能连接两个字段,所以这里用了两个CONCAT语句SUBSTRING只能剪切char类型字段,所以用cast转为charFROM  MSEGINNER  JOIN LIPS ON MSEG~VBELN_IM = LIPS~VBELNINNER  JOIN VBAK ON LIPS~VGBEL = VBAK~VBELNWHERE MSEG~BWART IN ( 'Z21' , 'Z22' )AND   MSEG~VBELN_IM <> ''AND   MSEG~WERKS = @P_BUKRSAND   MSEG~CPUDT_MKPF IN @S_BUDATINTO  TABLE @DATA(LT_MSEG) .DELETE ADJACENT DUPLICATES FROM  LT_MSEG COMPARING ALL FIELDS .

1.

 GET TIME STAMP FIELD DATA(timestamp).

作用是获取当前服务器时间,存储到timetamp。DATA(timestamp)是快速定义timestamp 。此时timestamp是P类型,此时该值等于20211020081246。

2.

 DELETE FROM demo_expressions.INSERT demo_expressions FROM @(VALUE #( id = 'X' timestamp1 = timestamp ) ).

这两句是对透明表demo_expressions做操作,先删除表数据,然后插入一行数据,为后面的sql语句做准备。

3.这段sql语句要从最里面的括号看起

SELECT SINGLEFROM demo_expressionsFIELDS CAST( CAST( DIV( timestamp1 , 1000000 )AS CHAR )AS DATS ) AS date,CAST( SUBSTRING( CAST( timestamp1AS CHAR ), 9, 6 )AS TIMS ) AS timeINTO @DATA(wa).
DIV( timestamp1 , 1000000 )

timestamp除1000000取正此时timestamp=20211020  。

然后再看次内层括号,根据上面的运算可以同等转换为

CAST( DIV( timestamp1 , 1000000 )  AS CHAR )
CAST( 20211020 AS CHAR )

做完此次运算后timestamp=20211020此时为char类型

然后再往外层括号看,此时原代码可以转换为

FIELDS CAST( CAST( DIV( timestamp1 , 1000000 )    AS CHAR )  AS DATS ) AS date,
FIELDS CAST( 20211020 AS DATS ) AS date,

AS DATS  代表类型转换为DATS类型,AS date代表select 语句中timestamp的别名是date。

至此该部分sql已经解释完了。后部分的sql也很有意思,大家可以尝试解读下。

后半部分的sql是先强转为CHAR类型,再使用SUBSTRING将数据截取出来,然后再强转为时间类型。

SAP-ABAP-SQL语句中CAST字段类型转换示例,CONCAT连接示例,SUBSTRING截断示例相关推荐

  1. SQL语句中Cast的用法

    GPS平台.网站建设.软件开发.系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/inde ...

  2. SQL 语句中的字段名 如果是 关键字怎么办?

    再SQL 语句中 如果有的字段 是关键字 那么[关键字]可以防止 转载于:https://www.cnblogs.com/sexybomber/archive/2008/07/01/1233492.h ...

  3. mysql pdo 读取字段名_PDO如何处理SQL语句中对字段名以及表名的转义

    比如在一个数据表中有一个字段叫order,是专门用来做排序的,我的语句可能要这么写$sth = $pdo->prepare('SELECT * FROM table_name ORDER BY ...

  4. SQL语句中拆分字段

    SELECT PARSENAME(replace(MONITOR_ROOM_ID,'^' , '.'), 1) AS RoomID FROM ZY_MONITOR_ROOM 遇到以前系统高人设计的表, ...

  5. 在ABAP的SQL语句中写Oracle Hints

    在ABAP的SQL语句中写Oracle Hints ①用过的两个写法: 1.指定使用全表扫描:%_HINTS ORACLE 'FULL(table_name)' 2.指定索引:%_HINTS ORAC ...

  6. 报错,sql语句中尽量不要使用*,只查询需要的字段出来

    错误: sql语句中尽量不要使用*,只查询需要的字段出来. 解决: select id,tran_code,tran_name,tran_date,tran_time,tran_amount,1 as ...

  7. SQL语句中字段的拼接

    原始sql语句及效果如下: string sq = @"select gx_plan.id,fk_sec.factory as 本厂编号, `order` as 序号,gx_plan.Tot ...

  8. SQL语句中explain各字段含义

    SQL语句中explain各字段含义 1 id: 2 select_type 3 type 4 table 5 possible_keys 6 Key key列显示MySQL实际决定使用的键(索引) ...

  9. delphi去掉字段前后的引号_Delphi编程SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法...

    Delphi编程SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 (2011-06-23 12:14:13) 标签: delphi编程 sql语句引号 q ...

最新文章

  1. Windows客户端C/C++编程规范“建议”——结构
  2. zookeeper 客户端_zookeeper进阶-客户端源码详解
  3. Hacking PostgreSQL
  4. 《构建之法》阅读笔记04
  5. Linux —— 常用命令集合
  6. 有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
  7. vue_过滤器_note
  8. 串口上升时间标准_国家电网公司时钟同步标准.pdf
  9. Python自动控制鼠标中键滚动并截屏保存图像
  10. android文本框自动补全,[Android]AutoCompleteTextView自动补全文本框
  11. winform 只允许显示一个子窗体
  12. C++ String封装
  13. 大学计算机基础数据库知识点,大学计算机基础试题(数据库)
  14. mwt是什么意思网络用语_网络用语奶茶婊是什么意思(奶茶婊具备的3个表现)...
  15. 电脑网线,电脑网线主要分类
  16. ZUCC_计算机网络实验_实验11 Wireshark抓包软件高级
  17. 金蝶K3案例教程总账后台配置
  18. 董路:当“边缘人”来到舞台中央
  19. 单片机IO详解(上拉 下拉 准双向 输入 输出 推挽 开漏)
  20. html 宽度单位,长度单位有哪些?

热门文章

  1. python手写板,机器语言之手写识别_源码时代Python公开课|Python培训
  2. Web系统测试中的重点
  3. python提现_赶紧参加微信支付获取微信提现免费额度
  4. position:absolute详解
  5. IE6 IE7 并存
  6. 给初学Java的老铁,知道这4点太重要了!
  7. 雄关漫道真如铁,而今迈步从头越【我的2017】
  8. C++STL常用操作之prev、next篇
  9. 辉光管升压电路理论,让USB升压170V
  10. 模电学习5. 耦合电容、去耦电容与旁路电容