【问题标题】:How to convert characters to date in SAS proc sql如何在SAS proc sql中将字符转换为日期
【发布时间】:2015-05-26 06:38:55
【问题描述】:

我有一列名为 yearmonth 的数据存储为字符数据。我想将此列转换为另一列中的 SAS 日期,格式为 dd/mm/yyyy。

例如,假设其中一个数据是 201201。我想将其转换为 15/01/2012。问题是我只能使用proc sql并且无法更改数据。有人可以帮我解决这个问题吗?

编辑: 这是我做过的:

INPUT("01/" || substr(t1.Yearmonth, 5,2) ||"/"|| substr(t1.Yearmonth, 1, 4),ddmmyy10.) 

【问题讨论】:

  • 你如何推导出现在是一个月中的哪一天?如果列中缺少它应该总是在月中吗?
  • 附带说明:本网站并非旨在提供代码服务。我们很高兴帮助您解决您在尝试解决问题时遇到的问题。请编辑您的问题并添加有关您迄今为止尝试过的内容的信息。另外,请花一些时间通读 stackoverflow.com/help/how-to-ask。在这种特殊情况下,最好解释一下您所读到的关于 proc sql 的内容、将字符字段转换为数字字段的不同方法以及日期格式。

标签: date sas character


【解决方案1】:

您的数据集带有 YYYYMM 日期:

data input ;
input date $ ;
cards ;
201201
;run ;

您可以如下创建一个新变量:

proc sql ;
  create table output as
  select date, input(date, yymmn6.)+14 as newdate 
  from input
;quit ;

【讨论】:

  • @newbinput() 语句之后添加format=...,其中... 可以是@987654321 中的任何日期格式@.
【解决方案2】:

你可以试试下面的;

data test;
  mydate='20120115';
  date_new = input(mydate, ddmmyy10.);
  format date_new date10.;
run;

【讨论】:

  • 对不起@Nadeem_MK 我只能更改 proc 部分而无法更改数据部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-13
相关资源
最近更新 更多