sql - 在 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 添加到 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。格式以使日期的组成部分显示在示例清单中使用的可能令人困惑的日、月、年顺序中。
推荐阅读
- python - 如何在 Dash 中将条形图旋转 180 度?
- python-2.7 - 打印变量时延迟出现未处理的错误
- php - Netsuite 项目履行无效的行项目
- java - 使用 newSingleThreadExecutor 消除 ExecutorService 中的竞争条件
- python - Python:具有多个元素的数组的真值是模棱两可的。使用 a.any() 或 a.all()
- node.js - 使用 Node.JS 使用 Apple 的 .p8 文件签署 JWT
- python - 创建向量空间
- web-applications - 将网站大小调整为移动视图时的导航栏之类的应用
- javascript - 在联系表格 7 中的附件中添加删除选项
- spring - 注入配置依赖