Date 如何在SAS中提供两个日期之间的天数

Date 如何在SAS中提供两个日期之间的天数,date,sas,countdown,Date,Sas,Countdown,我每年都有好几个时段,其中零点是一个特殊的日子。我需要创建一个列表,列出从周期开始到周期结束的前后所有日期及其相关的天数 以下是一个例子: 开始日期(2016年4月8日) 零日(2016年5月1日) 截止日期(2016年8月4日) 列表如下所示: Day Date -37 08APR2016 -36 09APR2016 . . 0 01MAY2016 1 02May2016 . . 94 04AUG2016 我不知道如何编写必要的SAS代码来做到这一点,任何援助将

我每年都有好几个时段,其中零点是一个特殊的日子。我需要创建一个列表,列出从周期开始到周期结束的前后所有日期及其相关的天数

以下是一个例子: 开始日期(2016年4月8日) 零日(2016年5月1日) 截止日期(2016年8月4日)

列表如下所示:

Day  Date
-37  08APR2016
-36  09APR2016
 .
 .
 0   01MAY2016
 1   02May2016
 .
 .
 94  04AUG2016
我不知道如何编写必要的SAS代码来做到这一点,任何援助将不胜感激

目前,我正在创建一个id变量,该变量从开始日期到结束日期都有N个计数。然后,我为每个列表添加正确的数字,使日期为零。所以在上面的例子中,我会对第一个做N-38,然后从那里开始计算


然而,当对多个列表执行此操作时会变得很混乱,我希望有一种快速的方法将某一天设为零,然后倒数到第一天,再倒数到最后一天。

您所问的是非常直接的问题。你应该尝试一些东西,看看哪些有效,哪些无效

data want;
retain day date;
keep day date;
format date date9.;

startDate = '08APR2016'd;
endDate   = '04AUG2016'd;
zeroDate  = '01MAY2016'd;

do i = startDate to endDate;
   day = i - zeroDate;
   date = i;
   output;
end;
run;

要满足SO规则,您需要发布您尝试过的内容。SAS日期是整数(google it),因此您可以将它们作为常规数字递增/计数,逻辑将是正确的。如果有“开始”和“结束”,则忽略“零日”和从开始到结束的循环,只使用“零日”计算差值。因为日期是计算差值的整数,所以可以直接减去日期。