SPSS:测试两个日期之间的间隔是否包含第二个间隔

时间:2016-10-19 14:46:40

标签: date intervals spss

我正在开展一项需要我使用SPSS的项目。我对R感觉更舒服,但我需要留在SPSS环境中,而且我无法使用R插件。

我的问题涉及财政年度,并调​​整他们引入的额外日期。例如:

* fake data to permit syntax to be run.
data list free/number.
begin data
1
12
123
1234
12345
end data.

* calculate the number of days between the start/end of a fiscal year.
* this period contains a leap-day that I need to adjust for, but it returns 365.
compute begin1 = date.mdy(10,01,1999).
compute end1   = date.mdy(09,30,2000).
compute diff1  = datediff(end1, begin1, "days").

* this calculation behaves as expected-- producing 29 days.
compute begin2 = date.mdy(02,01,2000).
compute end2   = date.mdy(03,01,2000).
compute diff2  = datediff(end2, begin2, "days").
execute.

为了解决我遇到datediff()时遇到的问题,如果开始/结束之间的行间隔包含2/28和3/1,我计划只添加一天,在闰年期间。但是,我不确定在SPSS中执行此操作的最佳方法。我检查了一些SPSS list-servs,但还没有看到这种类型的测试/计算的解决方案。

2 个答案:

答案 0 :(得分:1)

datediff()计算两个日期之间的差异,这意味着开始日期(或结束日期 - 取决于您如何看待它)不包括在计数中。 如果你计算了(10,01,1999)和(10,01,2000)之间的差异,以及非闰年的预期365天,你会得到366的计数,就像你预期的那样。 (10,01,2000)和(10,01,2001)。

在您的第二个示例中,仅计算二月份,您计算了(02,01,2000)和(03,01,2000)之间的差异,得到了29天。如果你计算了(02,01,2000)和(02,29,2000)之间的差异,你会得到28天而不是29 ......

因此,如果您希望继续计算年初和年末之间的差异,只需在计算中加1即可。

答案 1 :(得分:1)

As eli-k says, datediff calculates the actual calendar interval. It knows the rules for leap years, which are more complicated than just years divisble by 4.