2020-08-21 22:50发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们如何计算第N个月的第一天和最后一天?
" N"可能是上个月或两个月前或三个月后。
示例-
今天是2014年4月28日
我需要2月1日(回溯两个月)-2014/2/1和
我需要2月的最后一天(也是两个月前)-2014/2/28
类似地,有时我需要上个月的第一天-2014年3月1日
上个月的最后一天-2014年3月31日。
感谢您的帮助。
谢谢
周杰伦
这实际上并不难。 假设您有一个参数来获取月数,则需要使用几个变量来使所有数据保持直线:
每月第一天:(获取请求的月份的月份和年份,以及 使用它们来获取该月第一天的日期)
DateVar checkDate = DateAdd(" m",(-1 * {?Months Back}),CurrentDate);
NumberVar chkMonth =月(checkDate);
NumberVar chkYear =年(checkDate);
Date(hkYear,chkMonth,1)
月末:( 转到下个月的第一天并减去1)
DateVar nextDate = DateAdd(" m",1,checkDate);
nextDate-1
-Dell
实际上,珍妮特(Janet),最初计算checkDate的公式是通过使用DateAdd减去月份来实现的。 然后,年值反映了几个月前{?MonthsBack}的月份。
此外,我有点怀疑您为什么要评论大约6年前的答案。 ...
-戴尔
嗨杰伊,
您也可以尝试:
本月初
日期(年(当前日期),月(当前日期)-2、01)
过去一个月
numberVar m:=如果Month(Datefield)= 12
然后是其他1个月(当前日期)+1;
numberVar y:=如果m = 1则
y:=年(当前日期)+ 1
其他年份(当前日期);
日期(y,m,01)-1
-谢谢,
Nrupal
Nrupal,
第一个公式的逻辑中有一个错误-它没有考虑年份边界。 因此,如果今天的日期是2月,则减去2个月将使月份0产生错误。
尝试使用DateSerial
DateSerial(Year(d),Month(d)+1,1-1),其中d = today表示当前月份的最后一天。
最多设置5个标签!
这实际上并不难。 假设您有一个参数来获取月数,则需要使用几个变量来使所有数据保持直线:
每月第一天:(获取请求的月份的月份和年份,以及 使用它们来获取该月第一天的日期)
DateVar checkDate = DateAdd(" m",(-1 * {?Months Back}),CurrentDate);
NumberVar chkMonth =月(checkDate);
NumberVar chkYear =年(checkDate);
Date(hkYear,chkMonth,1)
月末:( 转到下个月的第一天并减去1)
DateVar checkDate = DateAdd(" m",(-1 * {?Months Back}),CurrentDate);
DateVar nextDate = DateAdd(" m",1,checkDate);
nextDate-1
-Dell
实际上,珍妮特(Janet),最初计算checkDate的公式是通过使用DateAdd减去月份来实现的。 然后,年值反映了几个月前{?MonthsBack}的月份。
此外,我有点怀疑您为什么要评论大约6年前的答案。 ...
-戴尔
嗨杰伊,
您也可以尝试:
本月初
日期(年(当前日期),月(当前日期)-2、01)
过去一个月
numberVar m:=如果Month(Datefield)= 12
然后是其他1个月(当前日期)+1;
numberVar y:=如果m = 1则
y:=年(当前日期)+ 1
其他年份(当前日期);
日期(y,m,01)-1
-谢谢,
Nrupal
Nrupal,
第一个公式的逻辑中有一个错误-它没有考虑年份边界。 因此,如果今天的日期是2月,则减去2个月将使月份0产生错误。
-Dell
尝试使用DateSerial
DateSerial(Year(d),Month(d)+1,1-1),其中d = today表示当前月份的最后一天。
一周热门 更多>