博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何计算CDS view里两个时间戳之间的天数间隔
阅读量:2437 次
发布时间:2019-05-10

本文共 1310 字,大约阅读时间需要 4 分钟。

ABAP透明表里的时间戳,数据类型为dec:

webp

webp

有个需求:计算这两个时间戳之间的天数间隔,丢弃时间戳年-月-日8位后面的小时:分钟:秒。

举个例子:如果时间戳是20180918173132,丢弃173132,只保留20180918, 然后再计算天数间隔。

直接用CDS view的字符串操作函数substring是不行的,因为时间戳类型dec和substring期待的字符串类型不匹配。

webp

解决方案:

先将时间戳字段类型从dec强制转换成abap.dats:

@AbapCatalog.sqlViewName: 'zproday'@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Day between'define view zdate_day_between as select from comm_product {key comm_product.product_id as prod_id,comm_product.product_guid as prod_guid,comm_product.valid_from as valid_from,comm_product.valid_to as valid_to,cast(substring(cast(valid_from as abap.char(32)),1,8) as abap.dats) as from_date,cast(substring(cast(valid_to as abap.char(32)),1,8) as abap.dats) as to_date}

webp

然后再用CDS view标准的时间处理函数DATS_DAYS_BETWEEN:

@AbapCatalog.sqlViewName: 'zdbetw'@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #CHECK@EndUserText.label: 'Day between'define view zc_date_day_between as select from zdate_day_between as host{key host.prod_guid,host.prod_id,host.from_date,host.to_date,DATS_DAYS_BETWEEN(host.from_date, host.to_date) as no_of_days}

webp

测试结果:

webp

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

webp

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24475491/viewspace-2215958/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24475491/viewspace-2215958/

你可能感兴趣的文章
Vmware- 对Linux来说是一次友好的调整(转)
查看>>
Linux系统在线增加多个ip(转)
查看>>
谈兵:Linux/Unix操作系统入侵思路(转)
查看>>
移至64位SQL Server数据库(转)
查看>>
Linux下双网卡绑定技术实现负载均衡和失效保护(转)
查看>>
了解 Debian 系统(转)
查看>>
选择知识管理系统的数据库平台(转)
查看>>
Solaris硬盘分区简介(转)
查看>>
[修改]Shell里的测试条件(转)
查看>>
gcc编译器小知识FAQ(转)
查看>>
支持AVIVO功能 ATi发布新Linux驱动(转)
查看>>
Linux下多线程编程与信号处理易疏忽的一个例子(转)
查看>>
流氓和木马结合 强行关闭你的防火墙(转)
查看>>
SUSE一纸诉状控告SCO 捍卫知识产权(转)
查看>>
新闻观察:草民形象影响Linux的发展(转)
查看>>
debian下编译2.6.13.2内核的步骤及感受(转)
查看>>
预装正版的市场意义(转)
查看>>
创建小于16M XFree86迷你Linux系统(转)
查看>>
shell中常用的工具(转)
查看>>
使用MySQL内建复制功能来最佳化可用性(转)
查看>>