sas数字转日期格式_[转载]SAS中日期转换全攻略

以下的内容,要感谢webgu 在人大论坛上的亲情奉献。在SAS处理中,特别是在多个数据集合并过程中,我们经常要遇到 日期格式不匹配的情况,但是 日期 又是一个非常关键的匹配关键词,所以有必要 将各种不同的 日期变量的 转化 方法在这里做一个总结,不周到之处请广大博友提出修改意见。1.input: 年月日 output: 年月 ,这里要区分 显示 和 实际值 的区别。输入的时候,有时是数值型,...
摘要由CSDN通过智能技术生成

以下的内容,要感谢 webgu 在人大论坛上的亲情奉献。

在SAS处理中,特别是在多个数据集合并过程中,我们经常要遇到 日期格式不匹配的情况,但是 日期 又是一个非常关键的

匹配关键词,所以有必要 将各种不同的 日期变量的 转化 方法在这里做一个总结,不周到之处请广大博友提出修改意见。

1.

input:  年月日  output: 年月 ,这里要区分 显示 和 实际值 的区别。

输入的时候,有时是数值型,我们可能要将其 转化为字符型,然后再定义其 日期的显示格式;

比较常用的命令:

数值格式转化为字符型: put(year(date),z4.0) ||'-'||

put(month(date),z2.0);

字符格式转化为日期型:input(date,yymmdd10.)

时间变量的截取函数:

conn='01feb2011:8:45'dt;

dat_date=datepart(conn);

format dat_date date9.;

dat_time=timepart(conn);

format dat_time time5.;

Formats:

DATEw.  date9.  01JAN2014

DDMMYYw.

YYMMDDw.  YYMMDD10.  2014-06-18

YYMMxw.

YYMONw.  put x yymon7.;

2012JAN

Functions:

DAY

MONTH

MDY  date=mdy(1,2,2001);

2001-01-02

YEAR

季度:QTR(DATE)

今天日期返回函数:TODAY()

data test;

input time yymmn6.;

date=time-1;

format date yymmd7. time yymmd7.;

cards;

201201

201202

201203

201204

201205

;

run;

Data RiskFreeRateByMonth;

SetRiskFreeRateByMonth;

year_month=put(year(date),z4.0) ||'-'||

put(month(date),z2.0);

Proc print data=_last_(obs=25);

Run;

We can also use the “YYMMD.” format to do the same thing

For example:

year_month=put(date,YYMMD.);

data data _null_;

x='7jan2012'd;

put x

yymm7.;

put x

yymmc7.;

put x

yymmd7.;

put x

yymmn6.;

put x

yymmp7.;

put x

yymms7.;

put x

yymon7.;

run;

2012M01

2012:01

2012-01

201201

2012.01

2012/01

2012JAN

data a;

format date yymmdd10.;

date=mdy(1,2,2012);

yymm=compress(year(date)||month(date));

time=input(yymm,yymmn6.);

date1=time-1;

format  date1 yymmd7.;

format  time

yymmn6.;

run;

data a;

format date yymmdd10.  time yymmd7. date1

yymmd7.;

date=mdy(1,2,2001);

time=input(put(date,yymmn6.),yymmn6.);

date1=time-1;

run;

%let e=3;

data a;

format date yymmdd10.  time yymmd7. date1

yymmd7.;

date=mdy(1,2,2001);

time=input(put(date,yymmn6.),yymmn6.);

do i=1 to &e;

date1=intnx('month',time,-i);

output;

end;

run;

时间序列生成年月数据:

DATA zuoye7;

SET dd.cpi;

month=intnx('month','01NOV2009'd,_n_+1) ;

format month monyy7.;

proc print;

title '加入变量Month后的数据集输出';

run;

substr(put(date(),yymmddn8.),1,6)

运行后得到201207, 这个是当月的月份,请问如何得到上月的月份呢,运行后应该得到201206

su

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值