【问题标题】:Convert day of year to date using proc sql in SAS在 SAS 中使用 proc sql 将日期转换为日期
【发布时间】:2019-11-11 18:39:45
【问题描述】:

我有一年中的某一天列,需要将其转换为日期。我想找到每个人的保险范围开始的确切日期。我也有一年专栏

有数据:

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;

感谢任何帮助

【问题讨论】:

    标签: sql sas data-management


    【解决方案1】:

    您似乎只想将 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。格式以使日期的组成部分显示在示例清单中使用的可能令人困惑的日、月、年顺序中。

    【讨论】:

    • 谢谢!正是我想要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多