在 SAS 中使用 proc sql 将年份转换为日期
Convert day of year to date using proc sql in SAS
我有一年中的某一天列,需要将其转换为 date.I 想要找到每个人的保险范围开始的确切日期。我也有年份专栏
有数据:
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 添加到 YEAR 的第一天。您可以使用 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。格式,以便在您的示例列表中使用可能令人困惑的日、月、年顺序显示日期的组成部分。
我有一年中的某一天列,需要将其转换为 date.I 想要找到每个人的保险范围开始的确切日期。我也有年份专栏
有数据:
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 添加到 YEAR 的第一天。您可以使用 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。格式,以便在您的示例列表中使用可能令人困惑的日、月、年顺序显示日期的组成部分。