我想知道,我们如何从给定日期定义日期格式
例如,我的日期是20180423然后在sas中我想将格式定义为'yyyymmdd'
类似地,我在数据中给出的日期为12022018然后我想定义为'ddmmyyyy'
请注意,日期是在适当的日期提供给我的,但我想现在定义格式。 给出的日期将来可能会有所不同 所以我需要通过SAS
来处理所有的日期格式我的想法是20180422年 使用substr函数
data test;
a=20180422;
a=substr(a,1,4);
b=substr(a,5,1);
c=substr(a,7,1);
run;
但不确定。
如果有人能提供解决方案,那么它对我的项目工作有帮助。
先谢谢你的帮助。
答案 0 :(得分:3)
听起来您想要将各种值转换为日期。 SAS将日期存储为一个数字,即自1960年1月1日以来的天数。然后通常将此数字格式化为日期,以任何格式首选。
导入已经采用格式的日期时,必须使用input
函数以及信息将格式化的值转换为SAS日期。如果读入的日期值都采用相同的格式,则可以使用特定的信息。在您使用不同格式的情况下,您可以使用anydtdte.
信息将大多数标准日期格式转换为SAS日期。
以下示例将3种不同的日期格式转换为SAS日期,然后以date9.
格式显示SAS日期。我已经将未格式化和格式化的新值打印到日志中,这样您就可以看到它们存储为数字。
data _null_;
input date_in $20.;
date_out = input(date_in, anydtdte20.);
put date_in date_out date_out :date9.;
datalines;
20180422
12022018
27apr2018
;
run;
答案 1 :(得分:2)
使用input(a,anydtdte20.)
;这会将任何日期转换为SAS日期,然后使用函数Year()
,Month()
,Day()
来提取所需的数据。
您会发现此SAS Post对日期和区域设置非常有用。
解决方案:
我创建了一个包含两行的表;每一行都有不同的日期格式YYYYMMDD& DDMMYYYY向您展示代码如何处理不同的日期格式,将它们保存到SAS日期并将它们分解为年,月和日。天:
options DATESTYLE=DMY;
data have;
input a;
datalines;
20180422
12022018
;
run;
data test;
set have;
format date_a date9.;
date_a=input(a,anydtdte20.);
Year_a=year(date_a);
month_a=month(date_a);
day_a=day(date_a);
run;
输出:
a=20180422 date_a=22APR2018 Year_a=2018 month_a=4 day_a=22
a=12022018 date_a=12FEB2018 Year_a=2018 month_a=2 day_a=12
答案 2 :(得分:0)
您可以在数据步骤中使用if条件。使用If条件,检查条件是否为真(检查日期值满足所需条件),然后使用put函数格式化日期.Put函数可以将source作为第一个参数并格式化为第二个参数,并返回格式化值。同一列的不同值可以采用不同的格式指定。
像这样,
if a = 'date1CheckCondtion' then newA = put(a , dateformat1.);
if a = 'date2' then newA = put(a , dateformat2.);
然后,您可以选择以如下常见格式获取所有值:
dateA=input(newA,mmddyy6.);