SAS中的日期函数及需要注意的地方
(2011-07-31 23:19:43)
标签:
sas日期函数it |
SAS中的日期函数
(1)SAS中用数值来表示日期,SAS日期值等于具体日期离1960/1/1天数。
eg:
date
1959-1-1
1960-1-1
1961-1-1
2008-1-1
(2)SAS中的日期格式:
SAS有输入输出格式,输入格式通常在input语句中使用,而输出格式通常在format语句中使用。
输入格式:常见的有以下6种。
anydtdtew.
可以读取各种日期格式
w可以取5-32
datew.
w可以取7-32
ddmmyyw.
w可以取6-32
mmddyyw.
w可以取6-32
yymmddw.
w可以取6-32 默认的是6
julianw.
w可以取5-32
输出格式,常见的有8种,前4种是最常见的
datew.
mmddyyw.
Ddmmyyw.
Yymmddw.
julianw.
weekdatew.
worddatew.
dayw.
(3)在读取日期变量时应该根据原始数据中日期所用的格式来决定输入格式:
eg:
有数据文件
Input
如果是14-08-1983则用:
Input
如果是14 Aug 1983则用:
Input
(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
即可把SAS默认的两位数日期改为1950-2049年之间
OPTIONS
把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
7-digit