SAS INTNX功能

时间:2017-05-03 03:46:07

标签: date sas

我对data have; date = '11Mar2016'd; DO tenuremonth = 0 to 12; Emth=INTNX('Month', date, tenuremonth); Mthstart=Emth-1; Mthend=INTNX('Month',Emth, 1)-1; end; format emth date mth: date9.; run; 功能提出了疑问:

Mthend

我的问题是:
我知道Mthstart是一个月的最后一天。但是,我不知道Mthendtenuremonth之间的区别 恩。当Emth = 1时 01Apr2016应该等于Mthend31Mar2016等于Mthstart
似乎Mthend<div id="wheel1"> <p>Running left</p> </div> <div id = "wheel2"> <p>Running right</p> </div> 相同。但是,它们实际上是不同的 任何人都可以解释一下吗? 欣赏。

1 个答案:

答案 0 :(得分:2)

首先,您在output循环内缺少明确的do语句,以便输出循环的每次迭代。我认为这只是一个错字,因为你在你的问题中引用了tenuremonth = 1的值。

根据您的代码,intnx功能正如我所料,您可能还没有完全理解它在做什么。

正如@Reeza所提到的,intx有一个第4(可选)参数,可让您在月份,开始,中间,结束的不同时间返回日期,并与输入日期相同。如果未指定任何内容,则默认为开头。

因此,Emth将始终返回当月的第1天,因此对于tenuremonth = 0,这将是01MAR2016。

Mthstart只需要Emth并从中减去1天,所以将返回29FEB2016。

Mthend接受Emth,将其提前1个月,然后减去1天,因此将在2016年3月31日重新开始。

获得月末的简便方法是将end添加到intnx,就像这样

Mthend=INTNX('Month',date, tenuremonth, 'end');