如何计算CDS view里两个时间戳之间的天数间隔
ABAP透明表里的时间戳,数据类型为dec:
有个需求:计算这两个时间戳之间的天数间隔,丢弃时间戳年-月-日8位后面的小时:分钟:秒。
举个例子:如果时间戳是20180918173132,丢弃173132,只保留20180918, 然后再计算天数间隔。
直接用CDS view的字符串操作函数substring是不行的,因为时间戳类型dec和substring期待的字符串类型不匹配。
解决方案:
先将时间戳字段类型从dec强制转换成abap.dats:
@AbapCatalog.sqlViewName:'zproday'@AbapCatalog.compiler.compareFilter:true@AccessControl.authorizationCheck:#CHECK@EndUserText.label:'Daybetween'defineviewzdate_day_betweenasselectfromcomm_product{keycomm_product.product_idasprod_id,comm_product.product_guidasprod_guid,comm_product.valid_fromasvalid_from,comm_product.valid_toasvalid_to,cast(substring(cast(valid_fromasabap.char(32)),1,8)asabap.dats)asfrom_date,cast(substring(cast(valid_toasabap.char(32)),1,8)asabap.dats)asto_date}
然后再用CDS view标准的时间处理函数DATS_DAYS_BETWEEN:
@AbapCatalog.sqlViewName:'zdbetw'@AbapCatalog.compiler.compareFilter:true@AccessControl.authorizationCheck:#CHECK@EndUserText.label:'Daybetween'defineviewzc_date_day_betweenasselectfromzdate_day_betweenashost{keyhost.prod_guid,host.prod_id,host.from_date,host.to_date,DATS_DAYS_BETWEEN(host.from_date,host.to_date)asno_of_days}
测试结果:
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。