在SAP Data Services中计算日期

2020-08-22 11:07发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要根据以下情况填充日期。

我得到的源数据是" 2年11个月17天"。 我必须使用sysdate()-2年,11个月,17天进行计算。

高度赞赏您对此的想法。

Dirk Venken -仅供参考。

谢谢

Vinay

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我需要根据以下情况填充日期。

我得到的源数据是" 2年11个月17天"。 我必须使用sysdate()-2年,11个月,17天进行计算。

高度赞赏您对此的想法。

Dirk Venken -仅供参考。

谢谢

Vinay

付费偷看设置
发送
5条回答
N-Moskvin
1楼-- · 2020-08-22 11:24

我相信您可以通过多种方式解决此问题。 要记住的一点是,内部日期是以天为单位的十进制值。 因此,表达式sysdate()+ 1为您提供了明天的日期。 分数是时间。

不过,更好的方法是借助num_to_interval()函数显式指定间隔。

https://help.sap.com/viewer/8092b085a68941f6aaa6708685html62b0d/4.2.13/en-us

年份和月份现在让我有些担心。 2020.01.01减去2年是多少? 我假设2018.01.01。 那里的间隔将无济于事。 可能是date_part()?

更大的问题,什么是2020.02.29减去2个月? 还是2020.05.31-2个月?

四川大学会员
2楼-- · 2020-08-22 11:29

谢谢沃纳。

我想知道如何使用date_part()函数处理源日期" 2年,11个月,17天",并使用sysdate()进行减法。

我将尝试将源日期调整为date_part()。 如果您有任何想法,那就太好了。

当学会了学习
3楼-- · 2020-08-22 11:42

我似乎没有找到使用date_part的方法。 任何示例都会有所帮助

悠然的二货
4楼-- · 2020-08-22 11:50

1),您可以创建一个自定义函数以从字符串中提取年,月,日

2)然后先从系统日期中减去天,然后使用add_month函数从示例中删除月份和年份
:add_months((sysdate()-17),(-1 * 11)+( -12 * 2))

自定义函数:
$ L_INPUT = $ P_INPUT;

$ P_YEARS = nvl(ltrim_blanks(rtrim_blanks(SUBSTR($ L_INPUT,1,index($ L_INPUT,'year(s)',1)-1))),'0');

IF(index($ L_INPUT,'year(s)',1)不为空)

开始

$ L_INPUT = SUBSTR($ L_INPUT,index($ L_INPUT,'year(s)',1)+8,4000);

结束

$ P_MONTHS = nvl(ltrim_blanks(rtrim_blanks(SUBSTR($ L_INPUT,1,index($ L_INPUT,'month(s)',1)-1))),'0');

IF(index($ L_INPUT,'month(s)',1)不为空)

开始

$ L_INPUT = SUBSTR($ L_INPUT,index($ L_INPUT,'month(s)',1)+9,4000);

结束

$ P_DAYS = nvl(ltrim_blanks(rtrim_blanks(SUBSTR($ L_INPUT,1,index($ L_INPUT,'day(s)',1)-1))),'0');

返回$ P_YEARS;

SC_Yao
5楼-- · 2020-08-22 11:45

您好 Vinay Kumar

您也可以尝试以下逻辑。

#cast(word_ext(replace_substr(" Date",'year(s)',''),1,','),'int')-年 #cast(word_ext(replace_substr(" Date",'month(s)',''),2,','),'int')-月 #cast(word_ext(replace_substr(" Date",'day(s)',``),3,','),'int')-天

查询代码:

< pre> add_months(sysdate()-cast(word_ext(replace_substr(" Date",'day(s)',''),3,','),'int'), ((cast(word_ext(replace_substr(" Date",'year(s)',``),1,','),'int')* -12))+(cast(word_ext(replace_substr(" Date" ,'month(s)',''),2,','),'int')*-1))

输出:

关于

Akhilesh 基兰。

一周热门 更多>