加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

SAS中的日期函数及需要注意的地方

(2011-07-31 23:19:43)
标签:

sas

日期

函数

it

SAS中的日期函数

 

(1)SAS中用数值来表示日期,SAS日期值等于具体日期离1960/1/1天数。

 

eg:

 

date         SAS value  

 

1959-1-1      -365

 

1960-1-1      0

 

1961-1-1      365

 

2008-1-1      17532

 

(2)SAS中的日期格式:

SAS有输入输出格式,输入格式通常在input语句中使用,而输出格式通常在format语句中使用。

 

输入格式:常见的有以下6种。

anydtdtew. 

可以读取各种日期格式                                                                         

w可以取5-32    默认的是 9

 

datew.        可以读取用ddmmmyy或者ddmmmyyyy形式表示的日期                             

w可以取7-32    默认的是 7 (注意:不管是输入还是输出,都没有ddmmmyyw.或者是ddmmmyyyyw.这种格式的写法,都是写成date9.)

 

ddmmyyw.  可以读取用ddmmyy或者ddmmyyyy形式表示的数据                                   

w可以取6-32    默认的是6

 

mmddyyw.  可以读取用mmddyy或者mmddyyyy形式表示的数据                                   

w可以取6-32    默认的是6

 

yymmddw.    可以读取用 yymmdd或者yyyymmdd形式表示的数据

 

w可以取6-32 默认的是6

 

julianw.       可以读取用yyddd或者yyyyddd形式表示的数据(表示yy年的第ddd天)     

w可以取5-32    默认的是5

 

输出格式,常见的有8种,前4种是最常见的

 

datew.   (注意:不管是输入还是输出,都没有ddmmmyyw.或者是ddmmmyyyyw.这种格式的写法,都是写成date9.)   

 

mmddyyw. 

 

Ddmmyyw.

 

Yymmddw.

 

julianw.    

 

weekdatew.

 

worddatew.

 

dayw.

 

(3)在读取日期变量时应该根据原始数据中日期所用的格式来决定输入格式:

 

eg:

 

有数据文件  08/14/1983  要读取这个日期就要在日期变量中使用一下格式:

 

Input  birthday  mmddyy10.

 

如果是14-08-1983则用:

 

Input  birthday  ddmmyy10.

 

如果是14 Aug 1983则用:

 

Input  birthday  ddmmmyy9.

 

(4)如果数据是用两位数来表示年份的需要设置前两位属于那个世纪

 

eg:

 

08/14/83 

 

需要通过设置世纪来让SAS知道是1983或者是1783或者2083

 

SAS默认的是两位数日期在1920到2019 之间 即当两位数年份用20-99时SAS认为是1920-1999年 当两位数年份是00-19时SAS认为是2000-2019年

 

要改变默认设置可以通过OPTINS进行 在SAS中输入

 

OPTIONS  yearcutoff=1950;

 

即可把SAS默认的两位数日期改为1950-2049年之间

 

OPTIONS  yearcutoff=1700

 

把SAS默认的两位数日期改为1700-1799年之间

 

(5)SAS的日期值之间进行加减运算从而求出两个日期之间间隔多少天

 

futherdate=checkdate+21 可以求出checkdate21天后的日期是什么

eg:

 

furtherdate=intnx(‘month’,checkdate,3),即返回的是checkdate变量之后三个月的日期数值,从1号开始。

 

Integer=intck(‘month’,checkdate,furtherdate),即返回的是checkdate和 furtherdate这两个变量之间的月数

 

(6)日期函数

 

day()、month()、qrt()、year()、weekday()可以分别从SAS日期值返回日 、月、季、年、和星期 (注意:weekday返回的是一个1~7的数值,其中Sunday是1,而Saturday是7)

 

mdy(m,d,y)可以求出SAS日期值

 

yrdif(stardate,enddate,'actual')可以返回两个日期之间的真实间隔年数

 

datdif(stardate,enddate,'actual')可以返回两个日期之间的真实间隔天数(注意:计算两个日期之间的天数datdif和intck这两个函数的效果是一样的,就像date和today的效果相同一样)

 

西洋julian日期的形式有两种:

5-digit  yyddd

7-digit  yyyyddd

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有