在SAS中使用proc-sql将一年中的某一天转换为日期



我有一个日期列,需要将其转换为日期。我想知道每个人开始投保的确切日期。我还有一个年度专栏

有数据:

id   start_day  year   day_register
1     1          2008    365
1     20         2009    345
2     1          2008    365
2     1          2009    365 
2     34         2010    331

想要的数据:

id   start_day  year    reg_date
1     1          2008    01/01/2008
1     20         2009    20/01/2009
2     1          2008    01/01/2008
2     1          2009    01/01/2009
2     34         2010    03/02/2010

我搜索了一下,发现以下命令在Oracle sql中有效,但在SAS sql 中无效

select year, start_day, day_register, add_days( cast(cast(year*10000 + 100 as varchar(255)) as date), day_register + start_day - 2) from have;

我感谢的任何帮助

看起来您只想将START_DAY添加到一年中的第一天。您可以使用MDY((函数生成一年中的第一天,方法是对月份和日期都使用一。记住减去一天,因为一年中的第一天是START_day数字一,而不是数字零。请确保将日期类型格式附加到它上,以便以可读的方式打印。

因此,如果在正常的SAS代码中完成,它可能看起来像这样:

reg_date = mdy(1,1,year)-1+start_day;
format reg_date date9.;

SQL中的语法有点混乱。

mdy(1,1,year)-1+start_day as reg_date format=date9.

您可以使用所需的任何其他日期类型格式。你甚至可以使用DDMMYY10。格式,使日期的组成部分以示例列表中使用的可能令人困惑的日、月、年顺序显示。

最新更新