SPSS: проверить, содержит ли интервал между двумя датами второй интервал

#date #intervals #spss

#Дата #интервалы #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, но не видел решения для этого типа теста / вычисления.

Ответ №1:

datediff() вычисляет разницу между двумя датами, что означает, что дата начала (или дата окончания — зависит от того, как вы на это смотрите) не включается в подсчет. Вы получили бы число 366, как и ожидали, если бы вычислили разницу между (10,01,1999) и (10,01,2000) и ожидаемыми 365 днями в невисокосные годы, например (10,01,2000) и (10,01,2001).

Во втором примере, рассчитанном только для февраля, вы вычислили разницу между (02,01,2000) и (03,01,2000), получив 29 дней. Если бы вы вычислили разницу между (02,01,2000) и (02,29,2000), вы получили бы 28 дней, а не 29…

Поэтому, если вы предпочитаете продолжать вычислять разницу между началом и концом года, просто добавьте 1 к своему расчету.

Ответ №2:

Как говорит eli-k, datediff вычисляет фактический интервал календаря. Он знает правила для високосных лет, которые сложнее, чем просто годы, делящиеся на 4.